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
关键调整说明
- 将
computer = t[randint(0,2)]移到循环内部,确保每轮游戏电脑都会重新选择,不会一直用同一个结果。 - 输入无效时用
continue跳过后续的player重置,避免用户输入错误后直接进入下一轮,保留当前输入提示的逻辑。 - 每轮游戏(输赢/平局)结束后,重置
player = False,让循环条件再次满足,自动开启下一轮游戏。
内容的提问来源于stack exchange,提问作者Albie
相关产品推荐
相关产品推荐

