Какой код, чтобы попросить пользователя ввести число и распечатать квадрат и куб этого числа в python 3.5?

#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. Спасибо, я попробовал это и предложение выше, и они оба решили проблему, с которой я столкнулся.