退出“ GAME OVER”的python应用程序

时间:2018-06-19 17:22:49

标签: python visual-studio

我想知道为什么这段代码不起作用;它应在“游戏结束”点退出,但会继续执行下一个定义的功能。 我在exit()上尝试了其他变体,例如:sys.exit()quit()SystemExit

run_attack = input("What do you do: Run/Attack\n")
run = ['run', 'Run', 'RUN']
attack = ['attack', 'Attack', 'ATTACK']
run_attack = 1
while run_attack < 10:
    if run_attack == ("run") or ("Run") or ("RUN"):
        print ("You turn to run from the wolf but he quickly pounces 
               you...")
        time.sleep(2)
        print("You are quickly ripped apart and just about get to see 
             yourself be eaten.")
        print("GAME OVER")
        break
        exit()       #This is where the game should exit, yet after input it 
                            continues to the next function


    elif run_attack == ("attack") or ("Attack") or ("ATTACK"):
         print("You brace yourself for a bite and have no time to reach" 
                 "for any kind of weapon form your backpack.")
        time.sleep("2")
        input("You clock the dog hard, twice on the muzzle.")
        print("The dog recoils in pain and retreats back to the woods.")
        print("You quickly start running as you assume there will be a den in the woods.")
        break       

    else:
        input("Type Run or Attack...")

2 个答案:

答案 0 :(得分:1)

您的代码中有几个问题;你为什么这么写却没有测试呢?

首先,您阅读用户的输入,立即用1替换,然后尝试(错误地)测试它是否仍然是字符串。您发布的代码有几个语法错误,因此在重现该问题时有些麻烦。但是,目前最明显的问题是:

    break
    exit()       # This is where ...

您无法进入exit语句,就像您break刚从循环中那样到达那里一样。


我强烈建议您备份到几行并使用增量编程:一次编写几行,调试它们,直到它们完成您想要的操作后再继续。

还要查找如何针对各种值测试变量。您的if陈述不正确。相反,请尝试尝试设置的列表包含项:

if run_attack in run:
    ...
elif run_attack in attack:
    ...

答案 1 :(得分:1)

我随意重写了整个程序,以向您显示该程序的一些错误和一些技巧。我已经完成了没有循环的操作,因为您无论如何都不会使用它。...一旦您掌握了它,就可以在以后添加while循环,但是您应该真正回到这里的一些基础知识: / p>

run_attack = input("What do you do: Run/Attack\n")

if run_attack.lower() == "run":
    print("""some
        stuff
        with
        multiple
        lines and GAME OVER""")
    exit()

elif run_attack in ("attack", "Attack", "ATTACK"):
    print("""some
        stuff
        with
        multiple
        lines""")

else:
    input("Type Run or Attack...")

一些注意事项:

  1. 使用"""作为字符串使您可以编写多行而无需多个print语句

  2. 在字符串上使用str.lower()使所有内容易于比较,因为您只需要将其与每个字符串的小写版本进行比较。但是对于attack,您会注意到我使用了一个不同的包含测试,没有多个条件。两种方法都可以在这里工作。

  3. 就像这里的其他答案(和许多评论)一样,您应该仅使用exit()完全退出程序,或者仅使用break退出循环并继续执行下面的其他代码整个循环。

  4. 在重写循环时,遇到类似while number_of_turns < 10的情况时,请不要忘记在每个循环的匝数上加上1,否则该条件总是 < / strong> True,您将陷入无限循环...

我实际上很惊讶该代码与您期望的行为有任何相似之处,我的建议是回到python的基础知识,学习循环,字符串方法,基本命令。其余答案已经在这里的另一个答案中说了(坦率地说,这比我的要好),只是想添加一些想法。