Python 执行第三个循环时,输入未检查第一个循环?py3
我正在python3中输入用户名。我只对字符串使用了3个while循环,最多12个字符,少于3个字符。所以名字必须是字母表和真名。当我运行程序并输入错误的名称时,它会不断要求更正名称,但当我直接正确输入第三个循环时,它不会检查前两个循环。我的意思是,当我输入超过12个字符时,突然输入带有数字的随机名称,它只接受输入,但不执行第一个循环,程序只在终端窗口结束。 这是我的代码:Python 执行第三个循环时,输入未检查第一个循环?py3,python,python-3.x,input,while-loop,alphanumeric,Python,Python 3.x,Input,While Loop,Alphanumeric,我正在python3中输入用户名。我只对字符串使用了3个while循环,最多12个字符,少于3个字符。所以名字必须是字母表和真名。当我运行程序并输入错误的名称时,它会不断要求更正名称,但当我直接正确输入第三个循环时,它不会检查前两个循环。我的意思是,当我输入超过12个字符时,突然输入带有数字的随机名称,它只接受输入,但不执行第一个循环,程序只在终端窗口结束。 这是我的代码: print('lets see what it does') f_name=input('Enter your firs
print('lets see what it does')
f_name=input('Enter your first name:')
while f_name.isalpha()==False:
print('Please Enter Alphabets only')
f_name=input('Please reenter name:')
while len(f_name)>12:
print('Name exceeds character limit.')
f_name=input('Please reenter name:')
while len(f_name)<3:
print('Name must be atlest three characters long')
f_name=input('Please ReEnter Name:')
lets see what it does
Enter your first name:ppp000
Please Enter Alphabets only
Please reenter name:pppppppppppppppp8
Please Enter Alphabets only
Please reenter name:ppppppppppppppp8
Please Enter Alphabets only
Please reenter name:pp9
Please Enter Alphabets only
Please reenter name:pp00
Please Enter Alphabets only
Please reenter name:pppppppppp8
Please Enter Alphabets only
Please reenter name:jijija8
Please Enter Alphabets only
Please reenter name:ijajsidaosdasdasdasd
Name exceeds character limit.
Please reenter name:ppp0```
我建议使用函数来验证名称。然后可以使用
:=
运算符定义f\u名称
def is_name_valid(name):
return (
name.isalpha() and
12 >= len(name) >= 3
)
def main():
while not is_name_valid(f_name := input('Enter your first name: ')):
print("Name is invalid")
print(f_name)
如果需要提示名称无效的原因,可以使用不同的返回值:
0
用于valid
,1
用于。isalpha()
等。。。为了更好地处理错误,您可能需要使用enums
或consts
三个while循环是顺序的和独立的。一旦您通过第一个或第二个,它们将不会被重新访问。您的意图可能不同,即如果同时满足所有三个条件,您希望接受输入。要做到这一点,请使用“and”将条件组合成一个while循环,只使用一个while循环。因此,要使用and我可以编写[[[while f_name.isalpha()==False,len(f_name)>12和len(f_name),感谢它的帮助