Python: Как мне разделить каждый элемент в строке на число?

#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. Я почти уверен, что с этим ничего не нужно делать