Форум сайта python.su
Всем доброго времени суток! Захотелось порешать задачки, начал курс на Stepik, но что-то споткнулся на первой же задаче:
Мое решение:
def process_sequence(seq): seq_length, *numbers = seq new_length = get_output_seq_length(seq_length) output_seq = [sum(pair) for pair in zip(numbers, reversed(numbers))][:new_length] return ' '.join(map(str, output_seq)) def get_output_seq_length(old_length): return int(old_length / 2 if old_length % 2 == 0 else (old_length + 1) / 2) def get_input_sequence(): input_data = input('Enter space-separated numbers: ').split() return list(map(int, input_data)) if __name__ == '__main__': input_seq = get_input_sequence() print(process_sequence(input_seq)) class SequenceTestCase(unittest.TestCase): def test_process_sequence(self): input = [10, 30, 32, 43, 65, -32, 54, 34, -23, 11, 9] expected_output = '39 43 20 99 22' result = process_sequence(input) self.assertEqual(expected_output, result) input = [5, 1, 2, 3, 4, 5] expected_output = '6 6 6' self.assertEqual(expected_output, process_sequence(input)) input = [2, 1, 4] expected_output = '5' self.assertEqual(expected_output, process_sequence(input))
Отредактировано Stright (Июль 19, 2017 01:29:36)
Офлайн
По условию, если нечетное n, то срединный элемент должен быть последним элементом.
т.е. в случае
input = [5, 1, 2, 3, 4, 5]
expected_output = '6 6 3'
Офлайн
Спасибо, нужно было внимательнее читать условие (но требование к выходным данным по заданию до сих пор кажется мутноватым).
Итоговое решение:
import sys def process_sequence(seq): seq_length, *numbers = seq output_seq = [sum(pair) for pair in zip(numbers, reversed(numbers))][:seq_length // 2] if is_seq_length_odd(seq_length): output_seq.append(get_middle_elem(seq)) return ' '.join(map(str, output_seq)) def is_seq_length_odd(seq_length): return seq_length % 2 != 0 def get_middle_elem(seq): return seq[int((len(seq) + 1) / 2)] def get_input_sequence(): input_data = sys.stdin.read().strip().split() return list(map(int, input_data)) if __name__ == '__main__': input_seq = get_input_sequence() print(process_sequence(input_seq))
Офлайн
StrightТы тесты прямо в код вставил? Надо отделять по разным файлам.
Мои тесты показывают
Отредактировано py.user.next (Июль 19, 2017 02:33:20)
Офлайн
Нет, тесты в отдельном файле, спасибо за замечания
Офлайн