2024-04-20 11:56:33 发布
网友
我用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时,它会出错。你知道吗
有人能解释为什么会发生这种情况以及如何解决这个问题吗?你知道吗
在Python2.x中,以零开头的数字将标记为八进制。如果您希望电话号码以0开头,则还应将电话号码作为字符串,使用raw_input:
raw_input
c = raw_input("Enter Your Phone Number Here:")
出现此问题的原因是不允许在八进制数中使用8。所以0682020687会引发一个错误。123456789不应该是个问题。你知道吗
我认为你的问题是在最后一行使用input而不是raw_input。你知道吗
input
正如文档所说,input将导致输入用eval求值,正如Faruk Sahin所说,这将导致数字被求值为八进制,其中0682020687不是有效的八进制数。见:http://docs.python.org/2/library/functions.html#input
eval
将最后一行更改为:
它将以字符串的形式读取输入并将其存储在变量c中。(很像你在前两行所做的)
c
一旦你得到了这个字符串,你就可以使用int函数把它变成一个数字:
int
c = int(raw_input("Enter Your Phone Number Here:"))
如果输入不是有效的整数,它将抛出一个您可以捕获的异常。见:http://docs.python.org/2/library/functions.html#int
您还应该注意,如果切换到使用Python3,则需要将所有raw_input函数替换为input,这与Python2中的raw_input相同。见:http://docs.python.org/3.0/library/functions.html#input
在Python2.x中,以零开头的数字将标记为八进制。如果您希望电话号码以0开头,则还应将电话号码作为字符串,使用
raw_input
:出现此问题的原因是不允许在八进制数中使用8。所以0682020687会引发一个错误。123456789不应该是个问题。你知道吗
我认为你的问题是在最后一行使用
input
而不是raw_input
。你知道吗正如文档所说,
input
将导致输入用eval
求值,正如Faruk Sahin所说,这将导致数字被求值为八进制,其中0682020687不是有效的八进制数。见:http://docs.python.org/2/library/functions.html#input将最后一行更改为:
它将以字符串的形式读取输入并将其存储在变量
c
中。(很像你在前两行所做的)一旦你得到了这个字符串,你就可以使用
int
函数把它变成一个数字:如果输入不是有效的整数,它将抛出一个您可以捕获的异常。见:http://docs.python.org/2/library/functions.html#int
您还应该注意,如果切换到使用Python3,则需要将所有
raw_input
函数替换为input
,这与Python2中的raw_input
相同。见:http://docs.python.org/3.0/library/functions.html#input相关问题 更多 >
编程相关推荐