#python
#python
Вопрос:
Может кто-нибудь, пожалуйста, любезно объяснить, почему я получаю эту ошибку? Спасибо!
counts = '2,4,6,8,10'
divisor = counts.split(',')
quotient = [20/number for number in divisor]
Я получаю следующую ошибку:
TypeError: unsupported operand type(s) for /: 'int' and 'str'
Редактировать:
Спасибо за предложения. Я внес изменения в свой код:
counts = '2,4,6,8,10'
divisor = counts.split(',')
quotient = [20/number for number in divisor]
Как мне распечатать результат деления следующим образом
20/2 = 10
для каждого из делителей?
Ответ №1:
Итак, вам просто нужно преобразовать вашу строку в int:
counts = '2,4,6,8,10'
divisor = counts.split(',')
quotient = [20/int(number) for number in divisor]
print(quotient)
Вы можете прочитать больше об этом преобразовании в: https://careerkarma.com/blog/python-string-to-int/#:~:text=To convert a string to,as an int , or integer.
Ответ №2:
Основная проблема заключается в том, что число нельзя разделить на строку. Давайте посмотрим внимательно:
counts
это строка, то есть это экземпляр str
класса. Когда вы применяете метод split
over counts
, вы создаете список string , это означает, что каждая позиция этого списка содержит экземпляр str
класса, которому соответствует этот список ['2', '4', '6', '8', '10']
, и в котором вы его храните divisor
. Пока здесь нет проблем.
Наконец, в строке:
quotient = [20/number for number in divisor]
Вы пытаетесь разделить 20
экземпляр int
класса на строки, хранящиеся в divisor
, что не имеет смысла, потому что все они являются экземплярами str
. Вот почему вы получаете ошибку:
TypeError: unsupported operand type(s) for /: 'int' and 'str'
Простыми словами, не разрешается использовать оператор /
между int
и str
.
Как говорится в других ответах, все, что вам нужно сделать, это преобразовать элементы в divisor
целые числа, тогда правильный способ следующий:
counts = '2,4,6,8,10'
divisor = counts.split(',')
quotient = [20/int(number) for number in divisor]
print(quotient)
Обратите внимание, что преобразование выполняется int(number)
, например, на первой итерации вы получите int('2')
, который возвращает 2
(без кавычек).
Ответ №3:
Код должен быть следующим:
counts = '2,4,6,8,10'
divisor = counts.split(',')
quotient = [20/int(number) for number in divisor]
print(quotient)
Вы пытаетесь разделить int на строку, что невозможно.
Ответ №4:
Список делителей, содержащий значения типа str. В строке 3 вы пытаетесь разделить int на str .
Ответ №5:
Вы можете изменить список (или любые другие итеры) номеров строк на целые числа, вот так:
counts = '2,4,6,8,10'
divisor = counts.split(',')
# key line below
divisor = map(lambda n: int(n), divisor)
quotient = [20/number for number in divisor]
print(quotient)
Ответ №6:
Приведите элементы строки к int
:
counts = '2,4,6,8,10'
divisor = counts.split(',')
quotient = [20/int(number) for number in divisor]
print(quotient)
Краткая версия:
print([20/int(x) for x in counts.split(',')])
Комментарии:
1. Почему все отрицательные голоса по трем правильным ответам? У нас всего 1 минута разницы с первым ответом, что довольно быстро.
2. Я почти уверен, что с этим ничего не нужно делать