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

Python石头剪刀布游戏if语句跳至else分支问题求助

解决石头剪刀布游戏的if分支问题

你的代码主要有三个基础问题导致逻辑失效:

  • 输入类型不匹配:input()获取的内容是字符串类型,比如你输入0,person实际是"0"(字符串),但computer是整数类型的0,字符串和整数无法相等,所以所有if/elif条件都不满足,直接跳转到else分支。解决方法是把输入转为整数:

    person = int(input("What do you choose. Type 0 for Rock, 1 for Paper, and 2 for Scissors "))
    
  • 部分print语句未用f-string:第二个elif的print没有加f前缀,里面的{rock}会被当成普通文本输出,不会替换成对应的图案,要统一使用f-string格式。

  • 换行符错误:代码里写的/n不是Python的换行符,正确的换行符是\n,否则只会显示/n字符,不会换行。

修正后的完整代码:

rock = '''
    _______
---'   ____)
      (_____)
      (____)
---.__(___)
'''

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

scissors = '''
    _______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''

#Write your code below this line 👇
import random
person = int(input("What do you choose. Type 0 for Rock, 1 for Paper, and 2 for Scissors "))

computer = random.randint(0, 2)


if person == 0 and computer == 1:
  print(f"You choose:\n{rock}\nComputer choose:\n{paper}\nYou lose 😭")
elif person == 0 and computer == 2:
  print(f"You choose:\n{rock}\nComputer choose:\n{scissors}\nYou win!")
elif person == 1 and computer == 0:
  print(f"You choose:\n{paper}\nComputer choose:\n{rock}\nYou win!")
elif person == 1 and computer == 2:
  print(f"You choose:\n{paper}\nComputer choose:\n{scissors}\nYou lose 😭")
elif person == 2 and computer == 0:
  print(f"You choose:\n{scissors}\nComputer choose:\n{rock}\nYou lose 😭")
elif person == 2 and computer == 1:
    print(f"You choose:\n{scissors}\nComputer choose:\n{paper}\nYou win!")
else:
    print("I'm sorry, that is not an available input. Please try again")

另外修正了第一个条件的胜负逻辑(原代码里0 vs 1应该是你输,因为布包石头),确保结果符合规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:50:37