首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >巨蟒3石头剪刀。再一次

巨蟒3石头剪刀。再一次
EN

Stack Overflow用户
提问于 2013-12-12 18:55:32
回答 3查看 295关注 0票数 0

我不知道我做了什么,但现在当我玩游戏时,它会在输入我的选择( r,p或s)之后结束,这与验证有关吗?

这是代码:

代码语言:javascript
复制
    from random import randint

    computer = randint(1,3)

    r = "r"
    p = "p"
    s = "s"
    print ("The computer has chosen. Your turn")
    player = input ("r is Rock, p is Paper, and s is Scissors. Put your letter in HERE-----> ")

    a = 1
    while (a == 1):
            if (player not in(r,p,s)): 
                    player = input ("That wasn't r, p, or s. Please try again. r is Rock, p is Paper, and s is Scissors. Put your letter in HERE-----> ")
                    if (player in (r,p,s)):
                            a = 2

    if (computer == 1):
            AI = ("rock")

    if (computer == 2):
            AI = ("paper")

    if (computer == 3):
            AI = ("scissors")

    if (player == r and computer == 1):
            print ("lol draw")


    if (player == p and computer == 2):
            print ("lol draw")


    if (player == s and computer == 3):
            print ("lol draw")


    if (player == r and computer == 3):
            print ("You WIN!!!!!! AI chose " + AI)

    if (player == p and computer == 1):
            print ("You WIN!!!!!! AI chose " + AI)

    if (player == s and computer == 2):
            print ("You WIN!!!!!! AI chose " + AI)

    if (player == s and computer == 1):
            print ("You LOSE!!!!!! AI chose " + AI)

    if (player == r and computer == 2):
            print ("You LOSE!!!!!! AI chose " + AI)

    if (player == p and computer == 3):
            print ("You LOSE!!!!!! AI chose " + AI)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-12 19:01:26

如果输入r,p或s,则进入无限循环。

代码语言:javascript
复制
a = 1
while (a == 1): #always enters
        if (player not in(r,p,s)): #if it is r or p or s it skips this
                player = input ("That wasn't r, p, or s. Please try again. r is Rock, p is Paper, and s is Scissors. Put your letter in HERE-----> ")
                if (player in (r,p,s)):
                        a = 2
        #and loops back, a being still 1

你在寻找这样的东西:

代码语言:javascript
复制
player = None
while player not in (r, p, s):
    player = input ("That wasn't r, p, or s. Please try again. r is Rock, p is Paper, and s is Scissors. Put your letter in HERE-----> ")
票数 1
EN

Stack Overflow用户

发布于 2013-12-12 19:01:42

要清理这些代码,还有很多工作要做,但您的问题来自于以下几个方面:

代码语言:javascript
复制
while (a == 1):
        if (player not in(r,p,s)): 
                player = input ("That wasn't r, p, or s. Please try again. r is Rock, p is Paper, and s is Scissors. Put your letter in HERE-----> ")
                if (player in (r,p,s)): #this shouldn't be indented this far
                        a = 2           #this one either, obviously :)
票数 1
EN

Stack Overflow用户

发布于 2013-12-12 19:06:03

现在,您的程序被困在第12-16行的无限循环中。你应该找出你自己的原因,因为你会从中学到更多。

就风格而言,您使用过多的if语句,这会使程序难以阅读。试着找出一种更简洁的方法来回答这个问题,而不用列举每一个案例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20551877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档