Получение Typerror: не все аргументы конвертируются во время форматирования строки - PullRequest
0 голосов
/ 23 марта 2020

Заданный вопрос - Учитывая список из 10 чисел, найдите среднее значение всех таких чисел, кратное 3

num = []
newlist = []

for i in range(1, 11):
    num.append(input())


for i in num:
    if i%3==0:
        newlist.append(i)

length = len(newlist)

total = sum(newlist)

average = total/length

print(average)

Получение ошибки этого типа ниже в строке 9, т.е. если i% 3 == 0

не все аргументы, преобразованные во время форматирования строки

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

input() возвращает строку , поэтому i%3 фактически выполнит printf стиль форматирование строки . Так как ваш ввод не имеет спецификаторов форматирования, но правый операнд оператора % не пустой, вы получаете ошибку, потому что вы пытались отформатировать строчку, в которой не хватает спецификаторов форматирования.

Чтобы решить эту проблему, преобразуйте входные данные в целые числа:

num.append(int(input()))
1 голос
/ 23 марта 2020

Когда вы num.append(input()), значение input() представляет собой строку . Вы должны сначала преобразовать это в int и обработать все возможные ошибки, прежде чем продолжить. Один из способов сделать это - изменить его на:

num.append(int(input()))

Поскольку все значения в num являются строками, i % 3 пытается выполнить форматирование старой строки , что не то, что вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...