TransWikia.com

Найти ошибку в коде Python

Stack Overflow на русском Asked by krakyz on November 10, 2021

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

number_list = []
N = int(input('N: '))
for _ in range(N):
    number_list.append(input())
control_number = int(input())
exp_control_number = 0
for i in range(1, len(number_list)-2):
    exp_control_number += (number_list[i] % number_list[i + 1])//1
if control_number == exp_control_number:
    print('Список не изменился')
else:
    print('Список изменился')

Заранее благодарю за ответ

2 Answers

Что-то вы путаете:

number_list = []
N = int(input('N: '))
for _ in range(N):
    number_list.append(int(input()))
print (number_list)

N: 5    
1    
2    
3    
4    
5

Результат [1, 2, 3, 4, 5]

Никакого бесконечного цикла.

Answered by passant on November 10, 2021

функция input всегда возвращает тип str. Потом вы делаете математические операции над строками, в связи с этим и получаете ошибку. Необходимо преобразовать данные в тип int

    number_list = []
    N = int(input('N: '))
    for _ in range(N):
        number_list.append(int(input()))
    control_number = int(input())
    exp_control_number = 0
    for i in range(1, len(number_list)-2):
        exp_control_number += (number_list[i] % number_list[i + 1])//1
    if control_number == exp_control_number:
        print('Список не изменился')
    else:
        print('Список изменился')

Answered by DD_N0p on November 10, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP