令牌无效.不接受以0开头的整数



所以我正在尝试制作一个检查数字功能,令人尴尬的是,我已经很早就遇到了一个障碍,但我一直在尝试搜索问题,但是大多数不幸的是,我遇到的解释超出了我的理解。我希望有人能给我一个特定的分解,以解决我的问题现在

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开头的整数写入时,语法错误"无效令牌"出现,我不知道如何求解它。谁能帮我吗?我会很感激

固定。我真的需要更新Python,目前我正在运行2.7。

raw_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开头的数字位于八进制基础中,您所获得的'无效令牌'错误必须大于7,这在基本8号中是非法的。尝试使用raw_input()代替input(),以免将值评估为数字。

与我一起解决了strint的问题:

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'>

在python中,非确定数字以'0'开头。小数号不能以" 0"开头。老式的八分音数字用于以" 0"开头,因此'010'在Python 2中为8。HEX数字以'0x'开头,并且仍然在Python 3中。在Python 3中,八分位数现在以'0o开始'。您正在丢弃错误,因为您要输入字符串然后在其上运行int()。不要那样做。您只需检查输入的字符串是否都是数字,并确保其长度正确。或者,如果您的心脏打算检查转换为十进制的 int ,则应在转换之前用value.lstrip('0')脱掉领先的零。

另外,您只需输入MAM,然后检查if mam.isdigit(): ....isdigit()方法检查字符串是否仅由数值数字组成。这应该是您要寻找的。

相关内容

  • 没有找到相关文章

最新更新