Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2017 01:26:09

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопрос по задаче с курса stepik

Всем доброго времени суток! Захотелось порешать задачки, начал курс на 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)

Офлайн

#2 Июль 19, 2017 01:41:19

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Вопрос по задаче с курса stepik

По условию, если нечетное n, то срединный элемент должен быть последним элементом.
т.е. в случае

 input = [5, 1, 2, 3, 4, 5]
ожидаемый ответ должен быть
 expected_output = '6 6 3'

Офлайн

#3 Июль 19, 2017 02:23:10

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопрос по задаче с курса stepik

Спасибо, нужно было внимательнее читать условие (но требование к выходным данным по заданию до сих пор кажется мутноватым).
Итоговое решение:

 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))

Офлайн

#4 Июль 19, 2017 02:28:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10001
Репутация: +  857  -
Профиль   Отправить e-mail  

Вопрос по задаче с курса stepik

Stright
Мои тесты показывают
Ты тесты прямо в код вставил? Надо отделять по разным файлам.

В задании говорят, что если список содержит чётное число элементов, нужно просуммировать крайние с сужением, а если список содержит нечётное число элементов, то надо сначала средний элемент скопировать в конец и после этого просуммировать крайние с сужением (будто он такой и подавался изначально). А у тебя этого нет.

И функции ты составил неправильно. Надо сначала это число n отделить нафиг, потом приготовить список к обработке, а потом обработать уже готовый список. На каждое из этих действий должна быть своя функция. Ввод, разделение, подготовка, вычисление сумм, вывод.



Отредактировано py.user.next (Июль 19, 2017 02:33:20)

Офлайн

#5 Июль 19, 2017 07:53:12

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Вопрос по задаче с курса stepik

Нет, тесты в отдельном файле, спасибо за замечания

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version