Python彩虹颜色校验代码循环异常求助:实现输入校验与重试逻辑
问题分析与修复
你的代码存在几个关键问题导致无法正常运行:
- 变量名拼写错误:初始化的是
color_tires,但循环里用的是color_tries,导致尝试次数永远无法累加,循环条件一直成立。 - 判断逻辑错误:
color != rainbow_list是拿输入的字符串和整个列表比较,这永远为真(字符串不可能等于列表),所以永远不会进入正确提示的分支。应该用color not in rainbow_list来判断输入是否不在彩虹颜色列表中。 - 赋值错误:
color_tries =+ 1是将变量赋值为1,而不是累加计数,正确写法是color_tries += 1。 - 缺少循环终止逻辑:即使输入正确颜色,也没有跳出循环,会继续执行后续的循环判断。
修正后的代码
rainbow_list = ["Red", "Orange", "Yellow", "Green", "Blue", "indigo", "violet"] color_tries = 0 color = input("enter a color of the rainbow: ") while color_tries <= 4: if color not in rainbow_list: color_tries += 1 # 如果是最后一次尝试,提示剩余次数 if color_tries == 5: print("尝试次数已用完!") break color = input(f"输入错误,请重新输入彩虹颜色(剩余{4 - color_tries}次机会): ") else: print("That is a correct color! ") break
代码说明
- 统一变量名为
color_tries,确保计数正常累加。 - 使用
color not in rainbow_list正确判断输入是否属于彩虹颜色。 - 修正计数方式为
color_tries += 1,实现尝试次数累加。 - 输入正确后通过
break跳出循环,避免继续执行。 - 增加剩余次数提示和尝试用完的提示,提升用户体验。
内容的提问来源于stack exchange,提问作者user19505926
相关产品推荐
相关产品推荐

