如何要求输入验证为10位数的整数?

2024-10-05 14:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个ISBN校验数字程序。然而,虽然我已经做了我的程序,它将只接受一个长度为10的值,如果我输入10个字母,它将崩溃。在

有人知道怎么解决这个问题吗?在

我的代码:

isbnnumber = input('Please input your 10 digit book no. : ')
while len(isbnnumber) != 10:
    print('You have not entered a 10 digit value! Please try again.')
    isbnnumber = input('Please input your 10 digit book no. : ')
else:
    no1 = int(isbnnumber[0])*11
    no2 = int(isbnnumber[1])*10... etc...

非常感谢您的帮助,谢谢。在


Tags: no代码程序inputyour字母数字校验
3条回答

可以将while循环的条件替换为检查数字的更丰富的条件,例如:

while not isbnnumber.isdigit() or len(isbnnumber) != 10:    

请注意,不仅有ISBN-10,还有ISBN-13(事实上在世界范围内更常用)。 另外,ISBN-10不一定都是数字:一个数字是校验和,它的计算结果可以是字母“X”(而不是10,数字)。 当你这样做的时候:也要检查那些校验和数字;它们存在是有原因的。在

所以我建议你做一些辅助函数:

def is_valid_isbn(isbn):
    return is_valid_isbn10(isbn) or is_valid_isbn13(isbn)

def is_valid_isbn10(isbn):
    # left as an exercise
    return len(...) and isbn10_validate_checksum(isbn)

def is_valid_isbn13(isbn):
    # left as an exercise
    return len(...) and isbn13_validate_checksum(isbn)

并按如下方式实现输入循环:

^{pr2}$

可以使用^{}测试字符串是否全部为数字:

while len(isbnnumber) != 10 or not isbnnumber.isdigit():

请参见下面的演示:

^{pr2}$

相关问题 更多 >