艰难地学习 Python,练习 43
Posted
技术标签:
【中文标题】艰难地学习 Python,练习 43【英文标题】:Learn Python the Hard Way, Exercise 43 【发布时间】:2012-01-19 17:19:41 【问题描述】:我目前正在编写由 Zed Shaw 编写的Learn Python the Hard Way。我在练习 43 中苦苦挣扎,它指示我创建一个具有以下属性的文本游戏:
使用超过 1 个文件 每个“房间”一节课到目前为止,我已经创建了两个文件,一个用于跑步者,一个用于房间:
game_runner.py
from game_map import *
class Runner(object):
def __init__(self, start):
self.start = start
def play(self):
next_room = self.start
while True:
print '\n'
print '-' * 7
print next_room.__doc__
next_room.proceed()
firstroom = Chillin()
my_game = Runner(firstroom)
my_game.play()
game_map.py
from sys import exit
class Chillin(object):
"""It's 8pm on a Friday night in Madison. You're lounging on the couch with your
roommates watching Dazed and Confused. What is your first drink?
1. beer
2. whiskey
3. vodka
4. bowl
"""
def __init__(self):
self.prompt = '> '
def proceed(self):
drink = raw_input(self.prompt)
if drink == '1' or drink == 'beer':
print '\n Anytime is the right time.'
print 'You crack open the first beer and sip it down.'
room = Pregame()
return room
#rest of drinks will be written the same way
class Pregame(object):
"""It's time to really step up your pregame.
How many drinks do you take?
"""
def proceed(self):
drinks = raw_input('> ')
#and so on
我的问题是我无法让 game_runner 进入下一个房间。当我运行它时,它会播放第一个房间的无限循环:打印 Chillin() 的文档字符串,要求输入,然后重复。
在第一堂课中输入正确响应后,如何更改我的跑步者和/或地图以返回下一堂课,即 Pregame()?
【问题讨论】:
伙计,这段代码看起来像是带有潜意识信息的啤酒广告 【参考方案1】:我认为你需要做的(如果我正确地遵循了你的代码)就是改变这个:
next_room.proceed()
到这里:
next_room = next_room.proceed()
您永远不会重新分配您在 while True:
循环中使用的变量,因此您将永远获得相同的行为。
【讨论】:
以上是关于艰难地学习 Python,练习 43的主要内容,如果未能解决你的问题,请参考以下文章
理解 Python 中的逻辑(Learn Python the Hard Way 练习 27)
Python|Kaggle机器学习系列之Pandas基础练习题
Python|Kaggle机器学习系列之Pandas基础练习题