#python
#python
Вопрос:
Я использую Python 3.5.2, и меня попросили написать небольшую программу, чтобы попросить пользователя ввести число, а затем программа распечатает квадрат и куб введенного числа. Это код, который я написал до сих пор:
number = input ('Please enter a number ')
y = (number)**2
z = (number)**3
print (y z)
и когда я запускаю его, я получаю следующее сообщение об ошибке:
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
Каков правильный код, чтобы заставить это работать?
Комментарии:
1.
input
всегда возвращает строку (в Python 3), и вы не можете выполнять арифметические вычисления со строками, поэтому вы должны преобразовать в числовой тип, напримерnumber = int(input('please enter a number'))
Ответ №1:
если вы сомневаетесь, добавьте операторы печати
number = input ('Please enter a number ')
print("number is %s of type %s" % (number, type(number)))
print("number is {} of type {}".format(number, type(number)))
y = number ** 2
print("y is {} of type {}".format(y, type(y)))
z = number **3
print("z is {} of type {}".format(z, type(z)))
print (y z)
Вывод:
python3 x.py
Please enter a number 4
number is 4 of type <class 'str'>
number is 4 of type <class 'str'>
Traceback (most recent call last):
File "x.py", line 5, in <module>
y = number ** 2
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
КАК вы можете видеть, number — это строка, потому что в python3 input
возвращает ввод пользователя в виде строки
измените его на int(input('Please enter a number'))
Ответ №2:
Ошибка не требует пояснений :
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'
В основном (number)
это строка, а 2
это целое число. Что вам нужно сделать, это преобразовать number
из str
в int
.
Попробуйте это :
y = int(number) ** 2
z = int(number) ** 3
print(y z)
Это должно сработать.
Комментарии:
1. Спасибо, я попробовал это и предложение выше, и они оба решили проблему, с которой я столкнулся.