Python 3.4.3中使用001时出现无效标记错误。

3

我在网上寻找了解决方案,但没有找到相关的内容。我的课程作业要求我制作一个程序,让计算机尝试猜测用户输入的数字。这个数字需要在001到100之间,因此我开始努力确保用户只能输入该范围内的数字。

我目前的代码:

import random
code=(int(input("Input a three digit code. Must be more than 001 and less than 100.")))
print(code)
if (code < 001) or (code > 100): 
    print ("Invalid code")
elif (code > 001) or (code < 100):
    print ("Valid code") 

将001更改为1后程序可以正常运行,但如果我用001运行它,会出现无效令牌错误。 需要在Python 3.4.3中完成此操作。 非常感谢任何形式的帮助。


你难道不需要一个 raw_input 或者任何 int 输入吗? - Ashwin Gupta
没事了,我查了一下,input() 在 Python 3 中可以使用。 - Ashwin Gupta
1个回答

3

在Python中整数不能有前导零。在Python 2中,前导零曾用于表示八进制数。由于许多人不知道这一点,并困惑于070 == 56,因此Python 3将前导零视为非法。

你不应该将code转换为整数 - 只能将实际数字(你打算进行计算的数字)存储在数字变量中。保留字符串:

while True:
    code = input("Input a three digit code. Must be more than 001 and less than 100.")
    try:
        value = int(code)
    except ValueError:
        print("Invalid code")
        continue
    if 1 <= value <= 100: 
        print ("Valid code")
        break
    else:
        print ("Invalid code") 

2
你可能想使用一个更好的检查方法,而不是"001" <= code <= "100"。如果我输入0az作为代码,它会被接受。你需要检查所有字符是否都是十进制数字。 - blubberdiblub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接