Python密码校验代码的while循环为何跳过if判断语句
问题原因
Python 3 中 input() 函数的返回值固定为字符串类型,你代码中预先定义的key是整数类型1057,不同数据类型的等值判断结果永远为False,这就是if判断始终被跳过的根本原因。
修复方案
- 方案1:将用户输入的内容转换为整数类型,再和
key比较
调整后代码:
key = 1057 while True: # 将输入的字符串转换为整数 inputKey = int(input("Enter your password ")) if inputKey == key: print("Welcome Back!") break else: print("Incorrect password, Please try again.")
注意:该方案如果用户输入非数字内容会触发ValueError报错,如有需要可额外补充异常捕获逻辑适配异常输入。
- 方案2:将预先定义的
key改为字符串类型,和输入值的类型保持一致
调整后代码:
# 把密钥定义为字符串类型 key = "1057" while True: inputKey = input("Enter your password ") if inputKey == key: print("Welcome Back!") break else: print("Incorrect password, Please try again.")
该方案无需做类型转换,也不会因为用户输入非数字内容触发类型报错,兼容性更好。
内容的提问来源于stack exchange,提问作者Racerroar
相关产品推荐
相关产品推荐

