《笨办法学Python》 第35课手记
《笨办法学Python》 第35课手记
本节课讲函数和分支的,实际上是一次综合练习,代码有点长,请先纠正代码中的错误使脚本能够运行。
原代码中使用三个空格来进行函数内部的缩进,但是我发现如果使用三个空格在缩进这个问题上会不断地报错,因此建议使用四个空格进行缩进。
代码如下:
from sys import exit
def gold_room():
print "This room is full of gold. How much do you take?"
next = raw_input("> ")
if "0" in next or "1" in next:
how_much = int(next)
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:
next = raw_input("> ")
if next == "take honey":
dead("The bear looks at you then slaps your face off.")
elif next == "taunt bear" and not bear_moved:
print "The bear has moved from the door. You can go through it now."
bear_moved = True
elif next == "taunt bear" and bear_moved:
dead("The bear gets pissed off and chews your leg off.")
elif next == "open door" and bear_moved:
gold_room()
else:
print "I got no idea 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?"
next = raw_input("> ")
if "flee" in next:
start()
elif "head" in next:
dead("Well that was tasty!")
else:
cthulhu_room()
def dead(why):
print why, "Good job!"
exit(0)
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?"
next = raw_input("> ")
if next == "left":
bear_room()
elif next == "right":
cthulhu_room()
else:
dead("You stumble around the room until you starve.")
start()
按照作者的操作思路进行游戏结果如下:
本节课涉及的知识
whlie true:这是一种获得无限循环的常用方法,因为判断表达式的值本身就是True,while循环将
无限进行下去。
认真阅读常见问题解答,并记住它们。
这节课的代码很长,介绍一下读代码的方法。
首先函数gold_room、bear_room、cthulhu_room(克鲁苏,一个作家陛下的恶魔)、start、dead是独立的,这些函数包含很多的分支,以供玩家选择,不同的分支将让游戏走向不同的结果。请先读懂这些函数。
最后一行触发函数start从而使游戏开始,从start函数开始,根据用户输入的答案引导游戏向前推进,游戏的下一个进程实质上是在start函数中调用其余的函数。
在心里给出你的答案,按照代码的含义向前推进,画出游戏的流程图。