You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 20:15:03