Python编写4位PIN码验证程序,现有代码报语法错误求排查修复
代码错误原因
你的代码触发无效语法错误以及后续逻辑错误的原因如下:
- 缺失必要的冒号:Python 规定函数定义、if 判断、while 循环、分支判断的行末尾必须添加冒号
:,原代码中def verify_pin(pin)、if pin == "1234"、if verify_pin(pin)、elif行末尾都没有加冒号,属于基础语法错误。 - 变量未定义就使用:while 循环判断条件用了未初始化的
counter变量,仅定义了tries变量,运行会触发未定义报错。 - 缩进规则错误:Python 依靠缩进区分代码块,
if verify_pin(pin)之后的打印、break 语句没有缩进,不会被判定为 if 分支内的代码,逻辑完全错误。 - 分支逻辑错误:
elif没有填写判断条件,且此处不需要多分支判断,直接用 else 即可;tries +=1写在 while 循环外部,永远不会执行,会导致程序死循环。 - 输入提示不符合预期:第一次输入提示、错误提示的文本格式和题目要求的示例不一致。
符合要求的正确实现
以下代码完全满足作业要求,强制使用break语句,最多允许3次输入机会,错误3次即锁定:
def verify_pin(pin): if pin == "1234": return True else: return False tries = 0 max_allowed_tries = 3 while tries < max_allowed_tries: # 按照输出示例切换提示文本 if tries == 0: input_prompt = "Please enter your pin code: " else: input_prompt = "Incorrect. Please enter again: " pin = input(input_prompt) if verify_pin(pin): print("Correct.") break tries += 1 else: # 3次全部输入错误,未触发break进入该分支 print("Too many wrong attempts, PIN has been locked.")
内容的提问来源于stack exchange,提问作者DD01
相关产品推荐
相关产品推荐

