TypeError:不支持的操作数类型 - :'str'和'str'Simpleton

时间:2013-12-15 13:35:04

标签: python python-3.x

这很简单,到目前为止我找到的所有消息都没有处理我的低级问题,但这是我的代码。

name=input("What is your name?")
weight=input("How much do you weigh?")
target=input("What would you like to weigh?")
loss=weight-target
print("So...",name,'You need to lose',loss,"pounds!")
print("\n\nPress enter key to scram!")

错误:

Traceback (most recent call last):
  File "/Users/davebrown/Desktop/Pract.py", line 7, in <module>
    loss=weight-target
TypeError: unsupported operand type(s) for -: 'str' and 'str'

我不明白为什么它不受支持?

3 个答案:

答案 0 :(得分:5)

您无法减去str个对象。 (3.x中的input与Python 2.x中的input不同,返回str对象。

>>> '2' - '1'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'

首先将它们转换为intfloat

>>> int('2') - int('1')
1

答案 1 :(得分:2)

您需要先将字符串转换为整数,这可以使用内置的int()float()函数

来完成

所以试试这个:

weight= int(input("How much do you weigh?"))
target= int(input("What would you like to weigh?"))

注意:

在python中,你不能在字符串上执行数学函数,例如除法或减法,而不先将它转换为整数但是可以执行字符串加法和乘法但是对于你的情况既不是字符串加法或乘法将起作用

示例:

>>> 'Hi' + ' Bye!'
'Hi Bye!'
>>> 'Hi' * 5
'HiHiHiHiHi'

答案 2 :(得分:0)

您显然正在使用python 3. input的结果始终是一个字符串,因此您必须先将它们转换为整数才能进行算术运算。 (在python 2中,input会将您输入的内容解释为python代码,因此您的代码将按预期工作)。

weight=int(input("How much do you weigh? "))

您可以使用+“添加”字符串,但没有相应的减法操作。如果有的话,给定字符串“添加”的方式,减去"25" - "5"会给你"2"!因此,您必须转换为整数才能获得预期的结果(关于获得权重的相应程序不会触发python错误,但会产生非常令人担忧的结果)。