0

我正在通过 LPTHW,我正在尝试创建一个游戏,您必须正确回答一系列问题才能移动到另一个房间。如果您回答错误,您将被退回或游戏结束。

在这种情况下,如何从 ans 更新变量以反映新值?我的答案似乎停留在第一个正确答案值上。

我将问题/答案对的字典转换为元组列表。当使用一个问题时,一个空列表会附加该问题和答案元组,并且原始列表会删除相同的元组,以免再次使用。非常感谢任何指导,谢谢。

http://pastebin.com/5NAaDv82

powershell 的示例输出:锡安国家公园在哪里?

犹他州#原始输入

utah utah # 这是 print 语句的输出

这是正确的!

你有 2 个问题要回答正确答案:1

[('锡安国家公园在哪里?', 'utah')] #这是用q/a键/值更新的空列表

商店猫叫什么名字?

毛球

furball #仍然与犹他州的第一个答案相比?

错误答案 2 [('锡安国家公园在哪里?','犹他州'),('商店猫叫什么名字?','毛球')]

什么是'Rauh Welt'?粗糙的世界

>

4

1 回答 1

0

每次使用 raw_input() 时,python 都会阻塞并等待用户输入。一旦用户提供该输入(并按下回车键),它将返回用户输入的值。

以后每次您希望向用户查询信息时,都必须再次使用 raw_input 来获取该信息:

ans1=raw_input('输入第1题的答案') ans2=raw_input('输入第2题的答案')

每次你想要一个新的答案时,你都需要使用 raw_input 来获得它。

请注意,在您的脚本结束时,您正在执行以下操作:

for i in keys:  #next 3 line compare used question to keys and if matched
   if i in qlist: # ...removes tuple from keys
       keys.remove(i)
       new_question = keys[0][0] # selects new question
       print new_question
       global ans
       ans = keys[0][1]
       print ans
       new_ans = raw_input("> ")
       ans = new_ans

在这里,您循环遍历键,如果键在 qlist 中,则将其删除并要求新答案。但是,在原始答案错误的情况下(并且 i 不在 qlist 中),您只需返回到 while 循环。

看起来你应该检查你的缩进,因为你可能在一个不属于那里的块中有代码。

于 2013-08-02T00:09:17.177 回答