笨办法”学Python3,Zed A. Shaw,习题35

代码

from sys import exit

def gold_room():
    print("This room is full of gold. How much do you take?")

    choice = input(">(0/1/...)")
    if "0" in choice or "1" in choice:
        how_much = int(choice)
    else:
        dead("Man, learn to type a number.")

    if how_much < 50:
        print("Nice, you're not greedy, you win!")
        exit(0)
    else:
        dead("You greedy bastard!")


def bear_room():
    print("There is a bear here.")
    print("The bear has a bunch of honey.")
    print("The fat bear is in front of another door.")
    print("How are you going to move the bear?")
    bear_moved = False

    while True:#为什么不是while bear_moved = True?-明白了,用true,没加入任何条件,这样就成为了一个无限循环。这里的True是让循环无限下去,而不是真的想赋值并进行判断。
        choice = input("> (take honey/taunt bear/taugh bear/open door/...) ")

        if choice == "take honey":
            dead("The bear looks at you then slaps your face off.")
        elif choice == "taunt bear" and not bear_moved:#not bear_moved就是bear_moved = false?
            print("The bear moved from the door.")
            print("You can go through it now.")
            bear_moved = True#选择这项之后,为何又回到bear_room()函数?-因为这是一个无限循环里的一个分支,并且结局不是指向外部,因此该代码块完成后进行重新循环了。
        elif choice == "taugh bear" and bear_moved:
            dead("The bear gets pissed off and chews your leg off.")
        elif choice == "open door" and bear_moved:#and 表示双重条件。
            gold_room()
        else:
            print("I got no idear what that means.")


def cthulhu_room():
    print("Here you see the great evil Cthulhu.")
    print("He, it, whatever stares at you and you go insane.")
    print("Do you flee for your life or eat your head?")

    choice = input("> (flee/head/...)")

    if "flee" in choice:
        start()
    elif "head" in choice:
        dead("Well that was tasty!")
    else:
        cthulhu_room()


def dead(why):
    print(why, "Good job!")
    exit(0)
    '''
    python的程序有两中退出方式:os._exit(), sys.exit():
    os._exit()会直接将python程序终止,之后的所有代码都不会继续执行。
    sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。
    '''

def start():
    print("You are in a dark room.")
    print("There is a door to your right and left.")
    print("Which one do you take?")

    choice = input("> (left/right/...)")#增加了一些小提示。

    if choice == "left":
        bear_room()
    elif choice == "right":
        cthulhu_room()
    else:
        dead("You stumble around the room until you starve.")

start()#本课的代码,先列下一堆的函数(函数其实相当于一个小段程序块),然后运行其中一个start函数,启动整段代码。

问题

问题和一些其他内容都加在上面的代码里了。

学到的

1、exit的用法;
2、无限循环的用法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值