令牌无效。不接受以 0 开头的整数
Invalid Token. Not accepting integers that start with 0
所以我正在尝试制作一个校验位功能,令人尴尬的是,我已经 运行 很早就陷入了困境,我一直在努力寻找问题所在,但大多数不幸的是,我 运行 的解释超出了我的理解范围。我希望有人能给我一个具体的 运行-down 关于我现在的问题
mam = []
def check_digit():
a = int(input("Please enter your 10 digit book number"))
b = str(a)
for c in b:
mam.append(c)
print(c)
check_digit()
抱歉没有为变量设置名称,我更喜欢这样编码,即使它最终会让其他人难以阅读。反正我每次写一个0开头的整数,都会出现语法错误"Invalid token",不知道怎么解决。谁能帮帮我?我将不胜感激
已修复。 我真的需要更新 Python,我现在 运行ning 2.7。
raw_input 解决了问题
在python中,以0
开头的数字是八进制的,你得到的'invalid token'错误必须是大于7的数字,这在a中是非法的基数 8。尝试使用 raw_input()
而不是 input()
,这样该值就不会被计算为数字。
您将 a
转换为 int,但从未将其用作 int。尝试直接遍历输入字符串。
mam = []
def check_digit():
a = raw_input("Please enter your 10 digit book number")
for c in a:
mam.append(c)
print(c)
check_digit()
其他答案对问题根源的解释对我来说很有意义。这应该可以解决问题,因为您根本不需要将输入解释为整数。
在Python中,非十进制数字以“0”开头。十进制数不能以“0”开头。旧式八进制数字过去以“0”开头,因此“010”在 Python 中为 8 2. 十六进制数字以“0x”开头,在 Python 中仍然如此 3. 在 Python 3、八进制数现在以'0o'开头。
你抛出错误是因为你输入了一个字符串然后 运行 int() 就可以了。不要那样做。您可以只检查输入的字符串是否全是数字,并确保它的长度正确。
或者,如果您打算检查将 int 转换为小数,则应在转换前使用 value.lstrip('0')
去除前导零。
或者,您可以只输入 mam 然后检查 if mam.isdigit():
...
.isdigit()
方法检查字符串是否仅由数字组成。这应该是您要找的。
这解决了我 str
与 int
的问题:
mam = []
def check_digit():
a = str(input("Please enter your 10 digit book number: "))
[mam.append(int(inputted)) for inputted in a]
print(mam)
check_digit()
print(mam[0] + mam[1])
print(type(mam[0]))
输入:
Please enter your 10 digit book number: 0123456789
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1
<class 'int'>
所以我正在尝试制作一个校验位功能,令人尴尬的是,我已经 运行 很早就陷入了困境,我一直在努力寻找问题所在,但大多数不幸的是,我 运行 的解释超出了我的理解范围。我希望有人能给我一个具体的 运行-down 关于我现在的问题
mam = []
def check_digit():
a = int(input("Please enter your 10 digit book number"))
b = str(a)
for c in b:
mam.append(c)
print(c)
check_digit()
抱歉没有为变量设置名称,我更喜欢这样编码,即使它最终会让其他人难以阅读。反正我每次写一个0开头的整数,都会出现语法错误"Invalid token",不知道怎么解决。谁能帮帮我?我将不胜感激
已修复。 我真的需要更新 Python,我现在 运行ning 2.7。
raw_input 解决了问题
在python中,以0
开头的数字是八进制的,你得到的'invalid token'错误必须是大于7的数字,这在a中是非法的基数 8。尝试使用 raw_input()
而不是 input()
,这样该值就不会被计算为数字。
您将 a
转换为 int,但从未将其用作 int。尝试直接遍历输入字符串。
mam = []
def check_digit():
a = raw_input("Please enter your 10 digit book number")
for c in a:
mam.append(c)
print(c)
check_digit()
其他答案对问题根源的解释对我来说很有意义。这应该可以解决问题,因为您根本不需要将输入解释为整数。
在Python中,非十进制数字以“0”开头。十进制数不能以“0”开头。旧式八进制数字过去以“0”开头,因此“010”在 Python 中为 8 2. 十六进制数字以“0x”开头,在 Python 中仍然如此 3. 在 Python 3、八进制数现在以'0o'开头。
你抛出错误是因为你输入了一个字符串然后 运行 int() 就可以了。不要那样做。您可以只检查输入的字符串是否全是数字,并确保它的长度正确。
或者,如果您打算检查将 int 转换为小数,则应在转换前使用 value.lstrip('0')
去除前导零。
或者,您可以只输入 mam 然后检查 if mam.isdigit():
...
.isdigit()
方法检查字符串是否仅由数字组成。这应该是您要找的。
这解决了我 str
与 int
的问题:
mam = []
def check_digit():
a = str(input("Please enter your 10 digit book number: "))
[mam.append(int(inputted)) for inputted in a]
print(mam)
check_digit()
print(mam[0] + mam[1])
print(type(mam[0]))
输入:
Please enter your 10 digit book number: 0123456789
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1
<class 'int'>