微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Python中创建一个使用单词而不是数字的Sentinel循环?

如何解决如何在Python中创建一个使用单词而不是数字的Sentinel循环?

因此,我正在为计算机科学专业学习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循环内,这样会导致输入错误(拼写错误的单词等)捕捉到循环的每次迭代。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。