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

Python石头剪刀布练习代码if判断未按预期执行问题求助

故障原因

你的if语句不触发的核心原因是比较两侧数据类型不匹配:

  • 通过input()方法获取的user_choice是字符串类型,你和"0"、"1"这类字符串比较逻辑是对的
  • random.randint(0,2)返回的computer_choice是整数类型,你在判断条件中把它和字符串"2"做相等比较,整数2和字符串"2"在Python中判定为不相等,因此条件永远不成立。
修复方法

两种修改方式可选:

  1. 仅修改判断逻辑,把computer_choice的比较对象改为整数
    修改后的判断代码:
if user_choice == "0" and computer_choice == 2:
    print("You win.")
  1. 统一变量类型为整数,避免后续新增判断时再出现同类问题,推荐用这种方案:
import random
rock = '''
_______
---'   ____)
      (_____)
      (_____)
      (____)
---.__(___)
'''

paper = '''
_______
---'   ____)____
          ______)
          _______)
         _______)
---.__________)
'''

scissors = '''
_______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''
choices = [rock, paper, scissors]
# 将用户输入转为整数
user_choice = int(input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors.\n"))
if user_choice == 0:
    print(rock)
elif user_choice == 1:
    print(paper)
else:
    print(scissors)

computer_choice = random.randint(0, 2)
print("Computer chose:")
print(choices[computer_choice])

# 两侧均为整数类型,比较逻辑正常
if user_choice == 0 and computer_choice == 2:
    print("You win.")

额外注意:Python语法要求if分支下的执行代码必须缩进,你粘贴的代码片段中if对应的print没有缩进,运行时会直接报语法错误,实际编写时需要保证缩进正确。

内容的提问来源于stack exchange,提问作者Natália Belicová

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:02