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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:22:34