长度验证



因此,我收到了一个输入6位数字的任务,我想在列表中进行长度验证,因为我已经完成了数字验证。出于某种原因,即使我输入了六个数字,它也会打印出来("只有六位数!请再试一次"(。不管怎样,这是我的代码(请原谅我刚开始学习python以来的代码构造(

while True:
numbers = input("Enter 6 digits: ")
if numbers.isalpha():
print("Invalid Input!", numbers ," is not a number!")
else:
NumberList = numbers.split()
if len(NumberList) == 6:
print("user list is ", NumberList)
break
else:
print ("6 digits only! Please try again")
不带参数调用的split函数在空白处进行拆分。

因此,您的字符串不会被拆分为列表(您只获得一个包含一个元素的列表,即您的字符串(。

print("123456".split())
['123456']

在这种情况下,要拆分字符串,必须使用:NumberList = list(numbers)

list("123456")
['1', '2', '3', '4', '5', '6']

输入肯定会给您一个字符串,因此您可以使用split函数,但默认情况下需要空格。

所以splitting this string会产生['splitting,'this','string'],但类似123456的东西会产生['123456'],所以长度总是一。

解决这个问题的方法是将字符串转换为列表:

更换

NumberList = numbers.split()

带有

NumberList = list(numbers)

这应该会产生['1','2','3','4','5','6'],因此应该会给您一个合适的长度。

不指定参数的string.split()方法将通过在任何空白处拆分原始字符串来创建子字符串列表。如果您的输入是,比如123456,那么numbers.split()将产生["123456"],因为输入字符串没有任何空格。在这种情况下,len(NumberList)是1,这就是它未通过验证的原因。

您可以直接检查len(numbers) == 6

如果你想把"123456"变成["1", "2", "3", "4", "5", "6"](因为这似乎是你想要打印的(,你可以使用list(numbers)

while True:
numbers = input("Enter 6 digits: ")
if numbers.isalpha():
print("Invalid Input!", numbers ," is not a number!")
else:
NumberList = len(numbers)
if NumberList == 6:
print("user list is", NumberList)
break
else:
print ("6 digits only! Please try again")

我假设您的输入类似于"123456";,首先,只有当字符串的所有元素都是字母时,您的检查str.isalpha()才会返回true,这意味着";123asd";会被认为是False,因此对您的程序有效,这是一个错误,其次str.split()只会根据分隔符字符来分隔字符串,默认值是空格,如果您的行是";123456";,split的结果将只是一个包含完整字符串的元素的列表,因为该行中没有空格。

while True:
numbers = input("Enter 6 digits: ")
if sum([n.isalpha() for n in numbers]):
print("Invalid Input!", numbers ," is not a number!")
else:
NumberList = list(numbers)
if len(NumberList) == 6:
print("user list is ", NumberList)
break
else:
print("6 digits only! Please try again")

此外,不需要将字符串拆分为列表,如果您只需要检查其长度,则可以使用len(numbers)

while True:
num = input("Enter a Number: ")
try:
numbers = [int(i) for i in num]
if len(numbers) == 6:
print('valid')
numbers = numbers[:5]
print(numbers)
else:
print('invalid')
except ValueError:
print('only numbers')

如果只需要数字,则数字验证不正确。我试着先输入数字,然后输入字母,然后我就通过了

相关内容

  • 没有找到相关文章

最新更新