#习题31:做出决定
print("You enter a dark room with two doors.Do you go through door #1 or door #2?")
door = input(">")
if door =="1":
print("There's a giant bear here eating a cheese cake.What do you do?")
print("1. Take the cake.")
print("2. Scream at the bear.")
bear = input(">")
if bear == "1":
print("The bear eats your face off. Good job!")
elif bear == "2":
print("The bear eats your legs off. Good job!")
else:
print("Well, doing %s is probably better. Bear runs away." % bear)
elif door == "2":
print("You stare into the endless abyss at Cthulhu's retina.")
print("1. Buleberries")
print("2. Yellow jacket clothespins.")
print("3. Understanding revolvers yelling melodies.")
insanity = input(">")
if insanity == "1" or insanity == "2":
print("Your body survives powered by a mind of jello. Good job!")
else:
print("The insanity rots your eyes into a pool of muck.Good job!")
else:
print("You stumble around and fall on a knife and die.Good job!")






加分习题
为游戏添加新的部分,改变玩家做决定的位置。尽自己能力扩展这个游戏,不过别把游泳弄得太怪异了。
#习题32:循环和列表
the_count = [1,2,3,4,5]
fruits = ['apples','oranges','pears','apricots']
change = [1,'pennies',2,'dimes',3,'quarters']
#this first kind of for-loop goes through a list
for number in the_count:
print("This is count %d" % number)
#same as above
for fruit in fruits:
print("A fruit of type: %s" % fruit)
#also we can go through mixed lists too
# notice we have to use %r since we don't know what's in it
for i in change:
print("I got %r" % i)
#we can also build lists,first start with an empty one
elements = []
#then use the range function to do 0 to 5 counts
for i in range(0,6):
print("Adding %d to the list." % i)
elements.append(i)
#now we can print them out too
for i in elements:
print("Element was: %d" % i)


加分习题
1. 注意一下 range 的用法。查一下 range 函数并理解它。
range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
range(start, stop[, step])
start默认为0;stop必填;step默认为1,必须为非零整数
range返回一个左闭右开[left, right)的序列数
2. 在第 22 行,你可以可以直接将 elements 赋值为 range(0,6),而无需使用 for 循环?
elements = range(0, 6)
for i in elements:
print("Element was: %d" % i)

3. 在 Python 文档中找到关于列表的内容,仔细阅读以下,除了 append 以外列表还支持哪些操作?
http://www.runoob.com/python3/python3-list.html
#习题33:While循环
i = 0
numbers = []
while i < 6:
print("At the top i is %d" % i)
numbers.append(i)
i = i + 1
print("Numbers now:",numbers)
print("At the bottom i is %d" % i)
print("The numbers: ")
for num in numbers:
print(num)


加分习题
1. 将这个 while 循环改成一个函数,将测试条件(i < 6)中的 6 换成一个变量。
2. 使用这个函数重写你的脚本,并用不同的数字进行测试。
3. 为函数添加另外一个参数,这个参数用来定义第 8 行的加值 + 1 ,这样你就可以让它任意加值了。
4. 再使用该函数重写一遍这个脚本。看看效果如何。
i = 0
numbers = []
n = int(input(">"))
while i < n:
print("At the top i is %d" % i)
numbers.append(i)
i = i + 1
print("Numbers now:",numbers)
print("At the bottom i is %d" % i)
print("The numbers: ")
for num in numbers:
print(num)

5. 接下来使用 for-loop 和 range 把这个脚本再写一遍。你还需要中间的加值操作吗?如果你不去掉它,会有什么样的结果?
numbers = []
for i in range(0, 6):
print("At the top i is %d" % i)
numbers.append(i)
print("Number now:", numbers) # 注意逗号
print("At the bottom i is %d" % i)
print("The numbers:")
for num in numbers:
print(num)
#习题 34:访问列表的元素 animals = ['bear','python','peacock','kangaroo','whale','platypus']
print("The animal at 1 is",animals[1])
#2.The 3rd animal.
print("The 3rd animal is",animals[2])#以下自行添加
#3.The 1st animal.
print("The 1st animal is %s" % animals[0])
#4.The animal at 3.
print("The animal at 3 is %s " % animals[3])
#5.The 5th animal.
print("The 5th animal is %s" % animals[4])
#6.The animal at 2.
print("The animal at 2 is %s" % animals[2])
#7.The 6th animal.
print("The 6th animal is %s" % animals[5])
#8.The animal at 4.
print("The animal at 4 %s" % animals[3])

--------------------------------------------------
animals = ['bear','python','peacock','kangaroo','whale','platypus']
for i in range(0,6):
if i == 0 :
print("The animal at %d is the %dst animal and is a %s" %(i,i+1,animals[i]))
elif i == 1:
print("The animal at %d is the %dnd animal and is a %s" %(i,i+1,animals[i]))
elif i == 2:
print("The animal at %d is the %drd animal and is a %s" %(i,i+1,animals[i]))
elif i == 3:
print("The animal at %d is the %dth animal and is a %s" %(i,i+1,animals[i]))
elif i == 4:
print("The animal at %d is the %dth animal and is a %s" %(i,i+1,animals[i]))
else:
print("The animal at %d is the %dth animal and is a %s" %(i,i+1,animals[i]))
#习题 35:分支和函数
from sys import exit
def gold_room():
print("This room is full of gold. How much do you take?")
choice = input(">")
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:
choice = input(">")
if choice == "take honey":
dead("The bear looks at you then slaps your face off.")
elif choice == "taunt near" and not bear_moved:
print("The bear has moved from the door.You can go through it now.")
bear_moved = True
elif choice == "taunt near" and bear_moved:
dead("The bear gets pissed off and chews your leg off.")
elif choice =="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?")
choice = input(">")
if "feel" in choice:
start()
elif "head" in choice:
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?")
choice = input(">")
if choice == "left":
bear_room()
elif choice == "right":
cthulhu_room()
else:
dead("You stumble around the room until you starve.")
start()

1. 把这个游戏的地图画出来,把自己的路线也画出来。
2. 改正你所有的错误,包括拼写错误。
3. 为你不懂的函数写注解。记得文档注解该怎么写吗?
4. 为游戏添加更多元素。通过怎样的方式可以简化并且扩展游戏的功能呢?
5. 这个? gold_room 游戏使用了奇怪的方式让你键入一个数字。这种方式会导致什么样的 bug? 你可以用比检查 0、1 更好的方式判断输入是否是数字吗? int() 这个函数可以给你一些头绪。

4049

被折叠的 条评论
为什么被折叠?



