这很简单,到目前为止我找到的所有消息都没有处理我的低级问题,但这是我的代码。
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'
我不明白为什么它不受支持?
答案 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'
>>> 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错误,但会产生非常令人担忧的结果)。