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

Python石头剪刀布游戏循环失效问题求助

石头剪刀布游戏循环失效问题修复

你的循环只执行一次的核心原因:进入while循环后,player = input(...)会把player从初始的False改成用户输入的字符串(比如"rock"),此时循环条件player == False不再成立,循环直接终止。后面的player = False和computer = t[randint(0,2)]在循环外部,根本不会被执行到,自然无法重新启动游戏。

修复方案

把重置player和重新生成电脑选择的逻辑放到循环内部,让每一轮游戏结束后自动重置状态,维持循环运行:

from random import randint

t = ["rock", "paper", "scissors"]

player = False

while player == False:
    # 每轮游戏开始前,让电脑重新生成选择
    computer = t[randint(0, 2)]
    player = input("rock, paper or scissors?")
    
    if player == computer:
        print("Tie!")
    elif player == "rock":
        if computer == "paper":
            print("sorry, you lose!", computer, "beats", player)
        else:
            print("Great, you win!", player, "destroys", computer)
    elif player == "paper":
        if computer == "scissors":
            print("sorry, you lose", computer, "beats", player)
        else:
            print("Great, you win!", player, "destroys", computer)
    elif player == "scissors":
        if computer == "rock":
            print("sorry, you lose!", computer, "beats", player)
        else:
            print("Great, you win!", player, "destroys", computer)
    else:
        print("not a valid input, try again")
        # 输入无效时跳过重置,继续等待正确输入
        continue
    
    # 一轮游戏结束后,重置player为False,触发下一轮循环
    player = False

关键调整说明

  1. 将computer = t[randint(0,2)]移到循环内部,确保每轮游戏电脑都会重新选择,不会一直用同一个结果。
  2. 输入无效时用continue跳过后续的player重置,避免用户输入错误后直接进入下一轮,保留当前输入提示的逻辑。
  3. 每轮游戏(输赢/平局)结束后,重置player = False,让循环条件再次满足,自动开启下一轮游戏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:45:32