如何正确验证数字的长度

时间:2017-05-23 18:02:11

标签: python

我希望能够检查用户输入8位数字的天气,而不是例如7位数字,并告诉他们输入的数字太长或不够长。

这里的参考是输入:

cardNumber = input("What is your 8 digit card number: ")

4 个答案:

答案 0 :(得分:0)

如果您使用的是Python 2,请使用raw_input代替input,这将始终返回string

>>> cardNumber = raw_input("What is your 8 digit card number: ")

What is your 8 digit card number: 00000001

>>> len(cardNumber)

8

在Python 2中,raw_input会将输入的值返回为string,而input会将输入的值评估为代码,等同于eval(raw_input(prompt))

您可以使用以下代码检查:

>>> cardNumber = input("What is your 8 digit card number: ")

What is your 8 digit card number: 2 + 4

>>> cardNumber

6

但是,在Python 3中,旧版raw_input已重命名为input,而旧版input不存在,但您仍可以使用eval(input())实现相同功能

获得卡号的string表示后,您可以使用len来获取字符数。

但是,我宁愿使用Regex来验证输入,而不仅仅是检查长度,因为您可能还有字母或其他符号。您可以将整个事物包装在循环中以继续询问,直到输入有效值。假设您使用的是Python 3,它将如下所示:

import re

from termcolor import colored

while True:
    cardNumber = input("What is your 8 digit card number: ")

    if not re.match('[0-9]{8}', cardNumber):
        print(colored("\nThe entered value is not valid. Please, try again.\n", "red"))
    else:
        break

答案 1 :(得分:0)

我猜您可以使用len()功能。

类似于if len(cardnumber) != 8: print("Please, input 8 digit number.")

答案 2 :(得分:0)

您可以使用通常的len

Python 3:

cardNumber = input("What is your 8 digit card number?")
s = len(cardNumber)
if s < 8: print("Too short")
elif s > 8: print("Too long")
else: print("Right Length")

Python 2:

cardNumber = raw_input("What is your 8 digit card number?")
s = len(cardNumber)
if s < 8: print("Too short")
elif s > 8: print("Too long")
else: print("Right Length")

通常,您可以使用len(str(number))

获取整数的位数

答案 3 :(得分:0)

如果您想循环直到用户输入正确的数字:

try:
   input = raw_input  # make this Python 2.6+ and 3.5+ compatible
except NameError:
   pass

while True:
    cardNumber = input("What is your 8 digit card number: ")
    if len(cardNumber) == 8:
        break
    if len(cardNumber) < 8:
        print("Your number is not long enough, please try again...")
    elif len(cardNumber) > 8:
        print("Your number is too long, please try again...")
print("Thank you, your number is: {}".format(cardNumber)