作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
from random import randint
from medical_room import *
from Library import *
from basement import *
from End import *
class start_Game(object):
def __init__(self):
print "You landed on planet and see three rooms."
print "You approach and see that you need to enter password..."
self.door=raw_input("Pick number of door>>>")
self.password=('%d')%(randint(1,9))
self.entered_password=int(raw_input("Enter password of one digit>>>"))
self.ROOMs={'1':Medical_room,'2':Library,'3':basement,'4':End}
while True:
# break
room=self.ROOMs[self.door]
# print room()
self.door=room()
a=start_Game()
当询问门号时,我选择“1”,并启动 Medical_room
类(类代码如下):
class Medical_room(object):
def __init__(self):
self.play()
def play(self):
print "Medical_room plays"
return '2'
但是由于出现错误,我无法切换到 Library
类:
room=self.ROOMs[self.door]
KeyError: <medical_room.Medical_room object at 0x0000000002906978>
对我来说一切都很好,但是Python不喜欢我的“伟大的逻辑”。请帮忙。
最佳答案
在循环运行之前,self.door
是一个字符串。在循环的第一次迭代中,您将 self.door 设置为第一次迭代中对象的引用。在第二次迭代中,您尝试使用该对象作为 self.ROOMS 上的键,但该字典只有键字符串。
你需要将self.door
设置为play
返回的字符串,我相信:
while True:
room=self.ROOMs[self.door]
self.door=room().play()
但是,这不允许您在每个房间中选择一扇新门(除非您更改 play
的定义)。
关于python - 我不明白代码行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17573674/
我是一名优秀的程序员,十分优秀!