Python石头剪刀布练习代码if判断未按预期执行问题求助
故障原因
你的if语句不触发的核心原因是比较两侧数据类型不匹配:
- 通过
input()方法获取的user_choice是字符串类型,你和"0"、"1"这类字符串比较逻辑是对的 random.randint(0,2)返回的computer_choice是整数类型,你在判断条件中把它和字符串"2"做相等比较,整数2和字符串"2"在Python中判定为不相等,因此条件永远不成立。
修复方法
两种修改方式可选:
- 仅修改判断逻辑,把
computer_choice的比较对象改为整数
修改后的判断代码:
if user_choice == "0" and computer_choice == 2: print("You win.")
- 统一变量类型为整数,避免后续新增判断时再出现同类问题,推荐用这种方案:
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á
相关产品推荐
相关产品推荐

