【问题标题】:How to start the "while" loop again after it returning False?返回False后如何再次启动“while”循环?
【发布时间】:2017-07-14 21:45:04
【问题描述】:

所以,我刚学完 Python 的基础知识,想制作一个小石头剪刀布游戏来练习我的知识。

现在,这是我目前为止的代码;

from random import randint


pipisuyu = 1
while pipisuyu == 1:

    secim = input("Taas kagit....")
    AI = randint(0, 2)
    if secim == "Tas" and AI == 0:
        print ("Rakibiniz de Tas secti, berabere!")


    elif secim == "Tas" and AI == 1:
        print ("Rakibiniz kagit secmisti. Kaybettin!")
        pipisuyu -= 1
    elif secim == "Tas" and AI == 2:
        print ("Rakibiniz makas secmisti. Kazandiniz!")   
        pipisuyu -= 1
    elif secim == "Kagit" and AI == 0:  
        print ("Rakibiniz tas secmisti. Kazandiniz!")
        pipisuyu -= 1
    elif secim == "Kagit" and AI == 1: 
        print ("Rakibiniz de kagit secmisti. Berabere!")
    elif secim == "Kagit" and AI == 2:  
        print ("Rakibiniz makas secmisti. Kaybettiniz!")
        pipisuyu -= 1
    elif secim == "Makas" and AI == 0:
        print ("Rakibiniz tas secmisti. Kaybettiniz!")  
        pipisuyu -= 1
    elif secim == "Makas" and AI == 1:
        print ("Rakibiniz kagit secmisti. Kazandiniz!")  
        pipisuyu -= 1
    elif secim == "Makas" and AI == 2:
        print ("Rakibiniz de makas secmisti. Berabere!")   

所以,我想为这个游戏做一个选项,以便再次玩,这会让我回到 while 循环。一开始我试过这个;

if pipisuyu == 0:
    anan = input("Tekrar oynamak isterseniz ""tekrar"" yaziniz.")
    if anan == "tekrar":
        pipisuyu += 1

但它不起作用,我相信即使现在 pipisuyu 等于 1,while 循环已经完成并且不再起作用。(?)

所以,如果有人能告诉我,我将如何在输掉或赢得比赛后再次回到 while 循环。

【问题讨论】:

  • 又一个while循环!
  • 您不能回到以前的某些指令。你可以做的就是重复一些事情。你如何重复某事?使用循环。所以使用循环重复游戏,直到没有人想再次玩。
  • 把它放在一个函数里?这是什么语言? “pipisuyu”?
  • 首先感谢大家的回复。还有 Samer Tufail,它是土耳其语,但只是一个愚蠢的俚语,请不要介意。

标签: python loops while-loop


【解决方案1】:

将游戏放入一个函数中,当pipisuyu为0时,再次调用run函数。每次运行时,pipisuyu 都会重新初始化为 1。不过要小心,退出此游戏的唯一方法是强制关闭终端。

from random import randint

def run():
    pipisuyu = 1
    while pipisuyu == 1:

        secim = input("Taas kagit....")
        AI = randint(0, 2)
        if secim == "Tas" and AI == 0:
            print ("Rakibiniz de Tas secti, berabere!")


        elif secim == "Tas" and AI == 1:
            print ("Rakibiniz kagit secmisti. Kaybettin!")
            pipisuyu -= 1
        elif secim == "Tas" and AI == 2:
            print ("Rakibiniz makas secmisti. Kazandiniz!")   
            pipisuyu -= 1
        elif secim == "Kagit" and AI == 0:  
            print ("Rakibiniz tas secmisti. Kazandiniz!")
            pipisuyu -= 1
        elif secim == "Kagit" and AI == 1: 
            print ("Rakibiniz de kagit secmisti. Berabere!")
        elif secim == "Kagit" and AI == 2:  
            print ("Rakibiniz makas secmisti. Kaybettiniz!")
            pipisuyu -= 1
        elif secim == "Makas" and AI == 0:
            print ("Rakibiniz tas secmisti. Kaybettiniz!")  
            pipisuyu -= 1
        elif secim == "Makas" and AI == 1:
            print ("Rakibiniz kagit secmisti. Kazandiniz!")  
            pipisuyu -= 1
        elif secim == "Makas" and AI == 2:
            print ("Rakibiniz de makas secmisti. Berabere!")

        if pipisuyu == 0:
            anan = input("Tekrar oynamak isterseniz ""tekrar"" yaziniz.")
            if anan == "tekrar":
                run()
run()

【讨论】:

  • 这不是回答他的问题吗?
  • 不需要递归,尽管您可以将游戏条件与循环放在一个函数中,并将条件放在 main 中的另一个循环中
  • @APorter1031 有点像,但这是不好的做法。通过足够的重播,您将破坏调用堆栈并且它会崩溃。另一个答案(把它放在一个while循环中)既简单又更好。
【解决方案2】:

抱歉,我不明白 Tekrar oynamak isterseniz ""tekrar"" yaziniz 是什么意思,但您似乎还需要一个 while 循环,类似这样:

anan = "tekrar"
while anan == "tekrar":
    pipisuyu = 1
    while pipisuyu == 1:
        ...
    anan = input("Tekrar oynamak isterseniz ""tekrar"" yaziniz.")

【讨论】:

  • 这意味着; “如果你想再玩一次,就输入‘again’。”这样当我输入“再次”输入时,while 循环需要重新开始。谢谢你的回答!
【解决方案3】:

仅使用您已经演示过的 Python 功能,您可以将游戏包装在另一个 while 循环中,该循环会为您执行重置。像这样:

from random import randint

pipisuyu = 1
while True:
    while pipisuyu == 1:

        secim = input("Taas kagit....")
        AI = randint(0, 2)
        if secim == "Tas" and AI == 0:
            print ("Rakibiniz de Tas secti, berabere!")
        elif secim == "Tas" and AI == 1:
            print ("Rakibiniz kagit secmisti. Kaybettin!")
            pipisuyu -= 1
        elif secim == "Tas" and AI == 2:
            print ("Rakibiniz makas secmisti. Kazandiniz!")   
            pipisuyu -= 1
        elif secim == "Kagit" and AI == 0:  
            print ("Rakibiniz tas secmisti. Kazandiniz!")
            pipisuyu -= 1
        elif secim == "Kagit" and AI == 1: 
            print ("Rakibiniz de kagit secmisti. Berabere!")
        elif secim == "Kagit" and AI == 2:  
            print ("Rakibiniz makas secmisti. Kaybettiniz!")
            pipisuyu -= 1
        elif secim == "Makas" and AI == 0:
            print ("Rakibiniz tas secmisti. Kaybettiniz!")  
            pipisuyu -= 1
        elif secim == "Makas" and AI == 1:
            print ("Rakibiniz kagit secmisti. Kazandiniz!")  
            pipisuyu -= 1
        elif secim == "Makas" and AI == 2:
            print ("Rakibiniz de makas secmisti. Berabere!")
    pipisuyu = 1

但是,为了稍微好一点,我们会将游戏逻辑封装在一个函数中,然后调用它:

from random import randint

def playGame()
    while pipisuyu == 1:

        secim = input("Taas kagit....")
        AI = randint(0, 2)
        if secim == "Tas" and AI == 0:
            print ("Rakibiniz de Tas secti, berabere!")
        elif secim == "Tas" and AI == 1:
            print ("Rakibiniz kagit secmisti. Kaybettin!")
            pipisuyu -= 1
        elif secim == "Tas" and AI == 2:
            print ("Rakibiniz makas secmisti. Kazandiniz!")   
            pipisuyu -= 1
        elif secim == "Kagit" and AI == 0:  
            print ("Rakibiniz tas secmisti. Kazandiniz!")
            pipisuyu -= 1
        elif secim == "Kagit" and AI == 1: 
            print ("Rakibiniz de kagit secmisti. Berabere!")
        elif secim == "Kagit" and AI == 2:  
            print ("Rakibiniz makas secmisti. Kaybettiniz!")
            pipisuyu -= 1
        elif secim == "Makas" and AI == 0:
            print ("Rakibiniz tas secmisti. Kaybettiniz!")  
            pipisuyu -= 1
        elif secim == "Makas" and AI == 1:
            print ("Rakibiniz kagit secmisti. Kazandiniz!")  
            pipisuyu -= 1
        elif secim == "Makas" and AI == 2:
            print ("Rakibiniz de makas secmisti. Berabere!")

while True:
    playGame()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-10
    • 2013-06-07
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多