Python 3难度选择代码输入hard后重复提示输入问题求助
问题产生原因
问题根源是while循环的逻辑条件写错了,受Python运算符优先级影响,你写的not diff == 'easy' or diff == 'hard'实际等价于(not (diff == 'easy')) or (diff == 'hard'):
- 当输入为easy时,
not diff == 'easy'是False,diff == 'hard'也是False,整体条件为False,循环正常终止 - 当输入为hard时,
not diff == 'easy'是True,or判断只要有一个为真整体就为真,所以循环会继续执行,不会退出,自然会重复弹出输入提示,不会执行后续的hard分支后续逻辑
修复方案
推荐直接用更简洁的成员判断写法修改循环条件,可读性更高也不容易出错:
import random # 假设words、wordseasy是你已经导入的自定义模块 diff = '' # 仅当diff不在合法选项里时才继续循环 while diff not in ('easy', 'hard'): diff = input('What difficulty? [easy/hard] ') diff = diff.lower() if diff == "hard": word = random.choice(words.hangman_words) word = word.upper() elif diff == "easy": word = random.choice(wordseasy.hangman_words_easy) word = word.upper() else: print('Invalid answer. Try again.')
如果要保留原有的判断写法,需要补充括号修正逻辑优先级,或者替换为and运算符:
# 写法1:加括号修正逻辑范围 while not (diff == 'easy' or diff == 'hard'): # 写法2:用and判断两个都不满足的情况 while diff != 'easy' and diff != 'hard':
内容的提问来源于stack exchange,提问作者Kizuo
相关产品推荐
相关产品推荐

