要求10位数字

时间:2014-11-02 19:26:49

标签: python while-loop try-catch

我正在测试用户输入的长度是10,只包含数字。目前,我的代码是:

while True:
    number = input("Enter number: ")

    try:
        if len(number) != 10:
        print ("Enter 10 digits\n")
        continue

    except ValueError:
        print ("Enter only numbers\n")
        continue

    else: 
        break

程序将询问用户输入,然后测试它是10长度并且只包含整数。 目前,用户输入被读取为字符串,因此如果它以'0'开头,那么如果你知道我的意思,那么它将包含在len()中。例如,如果我输入'0123456789',则会看到长度为10而不是9,因为它以'0'开头。 此外,我想确保如果用户输入10个字母,这将被拒绝,因为只允许使用数字。

非常感谢任何帮助。 谢谢。

3 个答案:

答案 0 :(得分:0)

在您的代码中没有任何一点,您实际上检查输入是否为整数.. 你可以这样做:

while True:
    number = input("Enter number: ")
    if not number.isdigit(): # check if a string contains a number with .isdigit()
        print ("Enter only numbers\n")
        continue
    elif len(number) != 10:
        print ("Enter 10 digits\n")
        continue
    else: 
        break

有关str.isdigit()的信息:

Type:       method_descriptor
String Form:<method 'isdigit' of 'str' objects>
Namespace:  Python builtin
Docstring:
S.isdigit() -> bool

Return True if all characters in S are digits
and there is at least one character in S, False otherwise.

答案 1 :(得分:0)

while True:
    number = input("Enter number: ")
    try:
        number = int(number)
    except ValueError:
        print ("Enter only numbers")
    else:
        if 10 > number//10**9 > 0 :
            print ("Enter 10 digits")
            continue
        else: 
            break

答案 2 :(得分:0)

您可以在转换为数字(整数)时检查错误

try: 
    if len(number) != 10 and int(number):
        print ("Your number is good!")
        break

    else :
        print("Your number isn't good!")
        continue

except ValueError:

    print('only digit please')
    continue

请注意len(数字)中的缺陷是第9个数字可能为0。

要确保这是一个有效的数字beetwen 1000000000和999999999,您可以执行以下操作:

import math
while True:

    try: 
        if math.floor(math.log10(int(number)))+1 == 10:
            print ("Your number is good!")
            break

        else :
            print("Your number isn't good!")
            continue

    except ValueError:

        print('only digit please')
        continue