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

Python初学者开发Steal/Deal博弈游戏时if语句无法正常执行如何解决?

问题分析与代码修正

现有代码存在3个核心错误:

  • 电脑选择赋值逻辑错误:print() 函数返回值为None,当前写法会导致computer变量存储空值,无法拿到电脑的实际选择用于后续判定。
  • 用户输入未归一化:用户输入的是s/d/q或全拼小写字符串,和电脑生成的Steal/Deal首字母大写的标准格式不统一,直接对比必然匹配失败。
  • 判定条件逻辑错误:sd是存储选项的列表,拿用户输入字符串和整个列表对比永远不成立,也缺少胜负判定的分支逻辑。

修正后可运行代码
import random

selection = 'Steal Deal or Quit'
sd = ["Steal", "Deal"]

# 处理用户输入并归一化
human = input('Steal, Deal or Quit [s|d|q]?:').lower()
print(" ")

human_choice = ""
if human in ('steal', 's'):
    human_choice = sd[0]
elif human in ('deal', 'd'):
    human_choice = sd[1]
elif human in ('quit', 'q'):
    human_choice = selection.split(" ")[3]

print(f'You chose: {human_choice}')
if human_choice == 'Quit':
    exit()

# 生成电脑选择
computer_choice = random.choice(sd)
print(f'Comp chose: {computer_choice}')

# 胜负判定
if human_choice == computer_choice:
    if human_choice == 'Steal':
        print('双方都选择Steal,双双落败!')
    else:
        print('双方都选择Deal,平局双赢!')
else:
    if human_choice == 'Steal' and computer_choice == 'Deal':
        print('你选择Steal,电脑选择Deal,你获胜!')
    else:
        print('你选择Deal,电脑选择Steal,你落败!')

逻辑说明
  1. 先对用户输入做归一化处理,无论用户输入缩写还是全拼、大写还是小写,都统一转为和电脑输出一致的标准格式Steal/Deal/Quit
  2. 先生成电脑的选择存储到变量中再打印,确保后续判定能拿到正确的电脑选项
  3. 按照给出的规则实现了全场景的胜负判定逻辑

内容的提问来源于stack exchange,提问作者McFez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:39:01