从元组列表更新变量

时间:2013-08-01 23:52:09

标签: python variables dictionary tuples

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

如何更新变量,在本例中为ans,以反映新值?我的答案似乎停留在第一个正确答案值上。

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

http://pastebin.com/5NAaDv82

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

  

utah #raw输入

犹他州犹他州#这是从print语句输出

那是正确的!

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

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

商店猫的名字是什么?

furball

  #p> furball#仍然比较第一个回答犹他州?

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

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

>

1 个答案:

答案 0 :(得分: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中你删除它并要求一个新的答案。但是,在原始答案错误的情况下(我不在qlist中),您只需返回while循环。

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