问题描述
因此,我正在为计算机科学专业学习python,并且对应该做的事情感到非常困惑。因此,我需要在我的剪刀石头布游戏中实现前哨控制重复。我不确定为什么会这样,我认为这只是为了使代码更简洁或更易于使用。但是,在此Sentinel循环中,我需要使用“ while”语句。这很难,因为我在使用数字而不是单词时只见过“ while”语句。当我尝试将这种循环实现到我的剪刀石头布游戏中时,它将永远循环,并且不起作用。有人可以看一下代码,看看发生了什么吗?我会很感激的:)
只是个公平的警告,我知道我的代码是一团糟。对不起,如果打扰任何人
# initialization phase
import random
def comp_choice():
'''
When called,this function returns
a random item from
'''
rps = ["rock","paper","scissors"]
return random.choices(rps)[0]
computer_choice = comp_choice()
# processing phase
player = (input("Enter rock,paper,or scissors:")) # what you can enter
while player == computer_choice:
if player == computer_choice:
print ("computer picked",computer_choice)
print ("Tie game!")
elif player == "scissors":
if computer_choice == "paper":
print ("computer picked",computer_choice)
print ("You Win!")
elif player == "rock":
if computer_choice == "paper":
print ("computer picked",computer_choice)
print ("You Lose!")
elif player == "paper":
if computer_choice == "scissors":
print ("computer picked",computer_choice)
print ("You Lose!")
elif player == "rock":
if computer_choice == "scissors":
print ("computer picked",computer_choice)
print ("You Win!")
elif player == "scissors":
if computer_choice == "rock":
print ("computer picked",computer_choice)
print ("You Lose!")
elif player == "paper":
if computer_choice == "rock":
print ("computer picked",computer_choice)
print ("You Win!")
# termination phase
else:
print ("I think you spelled something wrong... or you capitalized the first letter. try again please")
解决方法
在每次迭代中,while循环将评估布尔表达式,如果该表达式的评估结果为True,则继续。到目前为止,听起来您似乎一直在看到类似于var > 10
的布尔表达式,如果变量大于10,则布尔表达式为True,否则为False。 ,由于player == computer_choice
是布尔表达式,因此当前编写循环时,它将执行此操作。看来您的循环应该或多或少地按您希望的方式工作,但您的else
语句应位于while
循环内,这样会导致输入错误(拼写错误的单词等)捕捉到循环的每次迭代。