所以我已经被分配了一个任务(显然)来检查用户输入的输入是否格式正确,方式是AA99AAA(其中A是字母,9是0到9之间的数字) 。所以对于输入中的第一个字符,它必须是一个字母或python会返回某种错误等等,你就明白了。我不知道从哪里开始,我已经试过四处寻找并找不到任何东西 - 我想我只是不知道它是什么我在寻找对于。任何指针都将非常感谢,谢谢!
答案 0 :(得分:2)
为此,您可以将字符串拆分为3个部分(第一组字母,数字,然后是第二组字母)。然后,您可以使用s.isalpha()
和s.isnumeric()
。
例如:
while True:
c=input('Password: ')
if len(c)==7 and c[:2].isalpha() and c[2:4].isnumeric() and c[4:].isalpha():
break
else:
print('Invalid input')
print('Valid input')
答案 1 :(得分:1)
您是否可以提供有关该问题的更多信息,您提供的格式是否与您尝试匹配的格式相符? AA99AAA
,所以2-alpha,2-numeric,3-alpha?
我可以在这里采用两种方法,一种方法是使用正则表达式匹配[\w]{2}[\d]{2}[\w]{3}
之类的东西,或者你可以遍历字符串(回想一下字符串是字符数组) )。
对于这种方法,您必须生成子字符串以隔离您感兴趣的部分。所以..
for c in user_input[0:2]:
if c.isdigit:
print('Invalid Input')
for c in user_input[3:5]:
...
...
肯定会有更多的pythonic方法来解决这个问题,但这应该是足以帮助您正式化解决方案的信息。
答案 2 :(得分:1)
我终于做到了!大约一个小时后......
所以我用[]格式化和.isdigit / .isalpha来检查代码的每个部分,就像上面推荐的那样,但是我的方式略有不同:
while True:
regNo = input("Registration number:")
if len(regNo) != 7:
print("Invalid Registration Number! Please try again")
elif regNo[:2].isdigit():
print("Invalid Registration Number! Please try again!")
elif regNo[2:4].isalpha():
print("Invalid Registration Number! Please try again!")
elif regNo[4:].isdigit():
print("Invalid Registration Number! Please try again!")
else:
break
希望这有助于其他任何偶然发现此问题的人!