我希望能够检查用户输入8位数字的天气,而不是例如7位数字,并告诉他们输入的数字太长或不够长。
这里的参考是输入:
cardNumber = input("What is your 8 digit card number: ")
答案 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)