类石头剪刀布Python游戏平局判定逻辑失效问题求助
故障排查与修复
核心问题
print()返回值赋值错误:computer_choice = print(random.randint(1, 3))中,print()仅负责输出内容,它的返回值是None,导致computer_choice存储的是None,永远无法和用户输入的字符串匹配,这是平局判断失效的根本原因。- 类型不匹配:用户输入的
your_choice是字符串(如"2"),而random.randint(1,3)返回整数(如2),类型不同的两个值即使数值相同也无法判定相等。
修复后的完整代码
import random # 规则:2赢1,3赢2,1赢3 your_choice = input("1, 2 or 3?\n").lower() # 生成电脑随机选择并转为字符串,和用户输入类型统一 computer_choice = str(random.randint(1, 3)) # 单独打印电脑选择 print(f"Computer chose: {computer_choice}") # 平局判断 if your_choice == computer_choice: print("you tied!") # 胜利判断 elif (your_choice == "2" and computer_choice == "1") or \ (your_choice == "3" and computer_choice == "2") or \ (your_choice == "1" and computer_choice == "3"): print("You win!") # 失败判断 else: print("You lose!")
关键修复点
- 拆分电脑选择的生成与打印:先通过
random.randint生成数值,转为字符串后赋值给computer_choice,再单独打印该变量,避免将print()的None返回值存入变量。 - 统一数据类型:将电脑选择转为字符串,和用户输入的字符串类型保持一致,确保数值相等时能正确匹配。
- 补充完整胜负逻辑,让游戏具备完整功能。
内容的提问来源于stack exchange,提问作者DeVYuvi
相关产品推荐
相关产品推荐

