letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
userName = input('Please enter your name: ')
def NameValidation(userName):
nameValidation = []
print(nameValidation)
nameValidation += username.lower()
print(nameValidation)
for x in range(len(nameValidation)):
if nameValidation[x] not in letters:
print('I\'m sorry, I can\'t accept that')
userName = input('Please enter your name: ')
NameValidation(userName)
NameValidation(userName)
如果您第一次使用正确,此脚本将允许您继续,但如果您在userName
中输入一个输入字符串,其中输入字符串的任何字母都不包含在letter List
中,你将无法继续下一部分。当它循环返回并再次询问您的userName
时,即使它符合要求,脚本也不会让您继续执行脚本的下一部分。
答案 0 :(得分:1)
由于递归,您的代码会保持循环。设,输入为sakib123
,然后您的代码将sakib1
,然后输出I'm sorry, I can't accept that
。所以你再次给出New Input,nameValidation是new_Input + 23
。这就是为什么它不断循环。 :)
您可以尝试使用此代码。 :):)
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
userName = input('Please enter your name: ')
def NameValidation(userName):
nameValidation = ''
print (nameValidation)
nameValidation += userName.lower()
print (nameValidation)
flag = True
for x in range(len(nameValidation)):
if nameValidation[x] not in letters:
print('I\'m sorry, I can\'t accept that')
flag = False
break
if not flag:
userName = input('Please enter your name: ')
NameValidation(userName)
NameValidation(userName)