2

在 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'

有人可以告诉我为什么会收到此错误吗?

4

4 回答 4

2

是的,每个输入都是字符串。但只需尝试:

a = int(a)
b = int(b)

在你的代码之前。

但请注意,用户可以使用 raw_input 传递他喜欢的任何字符串。安全的方法是 try/except 块。

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  

文档中:

然后该函数从输入中读取一行,将其转换为字符串(去除尾随的换行符),然后返回。

于 2013-08-20T11:59:17.920 回答
1

是的,您认为您需要将输入从字符串更改为整数是正确的。

替换a = raw_input("Enter the first no: ")a = int(raw_input("Enter the first no: "))

请注意,ValueError如果给定的输入不是整数,这将引发 a。请参阅this了解如何处理此类异常(或isnumeric()用于检查字符串是否为数字)。

另外,请注意,尽管您可能会发现替换raw_inputinput可能有效,但这是一种糟糕且不安全的方法,因为在 Python 2.x 中它会评估输入(尽管在 Python 3.xraw_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  
于 2013-08-20T11:59:36.577 回答
0

raw_input()在去除尾随换行符后(当您按回车键时) ,将用户输入的字符串存储为“字符串格式” 。您正在对字符串格式使用数学运算,这就是为什么会出现这些错误,首先通过使用将输入字符串转换为某个 int 变量,a = int(a)然后b = int(b)再应用这些运算。

于 2013-08-20T12:06:16.630 回答
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 将输入作为字符串。

还有一个我想添加.. 为什么要使用 3 个额外的变量?

试试看嘛:

print "Sum =", a + b
print "Difference = ", a - b
print "Product = ", a * b 

不要使代码复杂。

于 2013-08-20T12:07:00.523 回答