在Python中获取用户输入是一个非常基本的疑问,Python是否将任何输入作为字符串并将其用于计算我们必须将其更改为整数或什么?在以下代码中:
a = raw_input("Enter the first no:")
b = raw_input("Enter the second no:")
c = a + b
d = a - b
p = a * b
print "sum =", c
print "difference = ", d
print "product = ", p
Python提供以下错误:
Enter the first no:2
Enter the second no:4
Traceback (most recent call last):
File "C:\Python27\CTE Python Practise\SumDiffProduct.py", line 7, in <module>
d=a-b
TypeError: unsupported operand type(s) for -: 'str' and 'str'
有人可以告诉我为什么会收到此错误?
答案 0 :(得分:2)
是的,每个输入都是字符串。但试试看:
a = int(a)
b = int(b)
在您的代码之前。
但请注意,用户可以使用raw_input传递他喜欢的任何字符串。安全方法是try / except block。
try:
a = int(a)
b = int(b)
except ValueError:
raise Exception("Please, insert a number") #or any other handling
所以它可能就像:
try:
a = int(a)
b = int(b)
except ValueError:
raise Exception("Please, insert a number") #or any other handling
c=a+b
d=a-b
p=a*b
print "sum =", c
print "difference = ", d
print "product = ", p
来自documentaion:
然后函数从输入中读取一行,将其转换为字符串(剥离尾部换行符),然后返回该行。
答案 1 :(得分:1)
是的,您认为需要将输入从字符串更改为整数。
将a = raw_input("Enter the first no: ")
替换为a = int(raw_input("Enter the first no: "))
。
请注意,如果给定的输入不是整数,则会引发ValueError
。有关如何处理此类异常(或使用isnumeric()
检查字符串是否为数字),请参阅this。
另外,请注意尽管您可能会发现用raw_input
替换input
可能会有效,但这是一个糟糕且不安全的方法,因为在Python 2.x中它会评估输入(尽管在Python 3中) .x raw_input
已替换为input
)。
示例代码可以是:
try:
a = int(raw_input("Enter the first no: "))
b = int(raw_input("Enter the second no: "))
except ValueError:
a = default_value1
b = default_value2
print "Invalid input"
c = a+b
d = a-b
p = a*b
print "sum = ", c
print "difference = ", d
print "product = ", p
答案 2 :(得分:0)
raw_input()
在删除尾随的新行字符(当您点击回车时)后,将用户输入的字符串存储为“字符串格式”。您正在使用字符串格式的数学运算,这就是获取这些错误的原因,首先使用a = int(a)
和b = int(b)
将输入字符串转换为某个int变量,然后应用这些操作。
答案 3 :(得分:0)
a = input("Enter integer 1: ")
b = input("Enter integer 2: ")
c=a+b
d=a-b
p=a*b
print "sum =", c
print "difference = ", d
print "product = ", p
只需使用input()即可获得正确的结果。 raw_input将输入作为String。
还有一个我想补充.. 为什么要使用3个额外的变量?
试试:
print "Sum =", a + b
print "Difference = ", a - b
print "Product = ", a * b
不要使代码复杂。