Python石头剪刀布游戏嵌套if语句中print语句失效问题求助
问题原因与解决方案
核心问题出在computer_choice的赋值逻辑上:
你使用了random.choices(["rock", "paper", "scissors"]),这个函数返回的是包含单个元素的列表(例如["rock"]),而player_choice是字符串类型(例如"rock")。列表与字符串属于不同类型,永远无法相等,导致所有if条件都无法触发,自然没有print输出。
修复方法
将random.choices()改为random.choice()(去掉末尾的s),这个函数会直接返回列表中的单个元素(字符串类型),这样就能和player_choice正常比较:
import random round_count = input("How many rounds would you like to play? ") score = 0 for i in range(int(round_count)): # 修正核心问题:用random.choice()替代random.choices() computer_choice = random.choice(["rock", "paper", "scissors"]) player_choice = input("Rock, Paper, Scissors? ").lower() if computer_choice == player_choice: print("Tie") else: if computer_choice == "paper" and player_choice == "scissors": print("Scissors beats paper. You win!") score += 1 elif computer_choice == "scissors" and player_choice == "paper": print("Scissors beats paper. You lost.") elif computer_choice == "rock" and player_choice == "scissors": print("Rock beats scissors. You lost.") elif computer_choice == "scissors" and player_choice == "rock": print("Rock beats scissors. You win!") score += 1 print(f"Your score is {str(score)}/{str(round_count)}")
额外优化建议:把else分支里的多个if改为elif,这样一旦某个条件匹配就会停止后续判断,提升代码执行效率。
内容的提问来源于stack exchange,提问作者oiecodes
相关产品推荐
相关产品推荐

