0

我在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 时它会出错。

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

4

2 回答 2

8

在 Python 2.x 中,以零开头的数字将其标记为八进制。如果您想要以 0 开头的电话号码,您也应该将电话号码作为字符串获取,请使用raw_input

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

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

于 2012-12-30T23:14:37.630 回答
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,您将需要替换所有与 python 2中相同的raw_input函数。请参阅:http://docs.python.org/3.0/library/functions。 html#输入inputraw_input

于 2012-12-30T23:17:51.197 回答