问题描述
我在 python3 中输入用户名。我只对字符串使用了 3 个 while 循环,限制为 12 个字符且少于 3 个字符。所以名字必须是字母和真名。当我运行程序并输入错误的名称时,它不断要求更正名称,但是当我直接正确输入第三个循环时,它不会检查前两个循环。我的意思是当我输入超过 12 个字符并突然输入带有数字的随机名称时,它只接受输入但不执行第一个循环并且程序仅在终端窗口中结束。 这是我的代码:
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_name
。
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
代表{{1} } 等等...为了良好的错误处理,您可能需要使用 .isalpha()
或 enums
。