习题32:分支和函数(函数调用函数)

发布时间:2017-11-21 22:17:58编辑:Run阅读(4998)

    已经会学了if语句,函数,还有列表,下面会有个文字游戏,加深理解

    代码如下

    # coding: utf-8
    __author__ = 'www.py3study.com'
    from sys import exit
    def gold_room():
        print("来到一个装满了金子的房间,你要带走多少金子?")
        next = input(">选择数量:1(带走全部)/2(带走一半)/3(什么都不要)")
        if next == '1':
            dead("路上被劫杀了!")
        elif next == '2':
            dead("路上被劫杀了!")
        elif next == '3':
            print('平平安安才是真! You Win !')
            exit(0)
        else:
            dead("不安提示来,重新开始吧~~")
    
    def bear_room():
        print("这里有一只熊.")
        print("熊有一堆蜂蜜.")
        print("熊挡在一扇门前.")
        print("你打算怎样引开这只熊?")
        bear_moved = False
        while True:
            next = input(">选择数字:1(服用蜂蜜)/2(嘲讽熊)/3(跟熊单挑)")
            if next == '1':
                dead("熊看着你然后将你吃了.")
            elif next == '2' and not bear_moved:
                print("熊已从门口挪开了,现在你可以通过门走了.")
                bear_moved = True
                gold_room()
            elif next == '3':
                dead("熊生气了,咬了你的腿.")
            else:
                print("我不知道那意味着什么.")
    
    def cthulhu_room():
        print("在这里你看到了恶魔Cthulhu")
        print("它盯着你,你快疯了")
        print("是逃命还是被吃?")
        next = input('>选择数字:1(逃走)/2(嘲讽)')
        if '1' in next:
            start()
        elif '2' in next:
            dead("恶魔Cthulhu把你吃了!")
        else:
            cthulhu_room()
    
    def dead(why):
        print(why, "Sam Gameover!")
        exit(0)
    
    def start():
        print("你在一个黑暗的房间里")
        print("你的左右都有一扇门")
        print("你选哪一个?")
        next = input(">选择数字:1(左)/2(右)/3(都不选,哪也不去)")
        if next == '1':
            bear_room()
        elif next == '2':
            cthulhu_room()
        else:
            dead("你在房间里,直到你饿死")
    
    start()

    应该看到的结果

    blob.png

    PS:这个游戏有很多分支,当你选择错误,人物就会死亡,游戏也会Gameover

    常见问题

    为什么是while True:

    这样可以创建一个无限循环

    exit(0)有什么功能?

    在很多类型的操作系统里,exit(0)表示正常退出程序,exit(1)则表示发生了错误

关键字