我的简单python脚本出错

时间:2012-12-30 23:09:12

标签: python input

我在python中创建了这个脚本:

a=raw_input("Enter your Name here:")
b=raw_input("Enter Your Country Name here:")
c=input("Enter Your Phone Number Here:")

--->问题是,当我输入123456这样的数字时,它没有给出任何错误,但是当我输入123456789或0682020687时,它会出错。

有人可以解释为什么会发生这种情况以及如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

使用零开始一个数字在Python 2.x中将其标记为八进制。如果您希望电话号码从0开始,您也应该将电话号码作为字符串,使用raw_input

c = raw_input("Enter Your Phone Number Here:")

出现此问题是因为您不允许在八进制数中使用8。所以0682020687会引发错误。 123456789应该不是问题。

答案 1 :(得分:2)

我认为您的问题是在最后一行使用input而不是raw_input

正如文档所述,input将导致使用eval评估输入,正如Faruk Sahin所说,这将导致数字被评估为八进制,其中0682020687不是有效的八进制数。请参阅:http://docs.python.org/2/library/functions.html#input

将最后一行更改为:

c = raw_input("Enter Your Phone Number Here:")

将输入作为字符串读取并将其存储在变量c中。 (就像你在前两行中所做的那样)

获得该字符串后,可以使用int函数将其转换为数字:

c = int(raw_input("Enter Your Phone Number Here:"))

如果输入不是有效的整数,它将抛出一个你可以捕获的异常。请参阅:http://docs.python.org/2/library/functions.html#int

您还应该注意,如果切换到使用python 3,则需要将所有raw_input函数替换为input,这与raw_input在python 2中执行的操作相同。请参阅:http://docs.python.org/3.0/library/functions.html#input