(!)比较变量时的无限循环,我不知道为什么?

时间:2014-03-11 17:39:10

标签: python while-loop

我创建了这个代码,在3个不同的地方获得3个不同的选项。它实际上是一个闪存卡程序,我希望工作,但我不能。它进入无限循环,我不知道为什么。可能还有其他问题,但我还没有,但无论如何请告诉我。保留sam var名称,以便我可以轻松理解。我附上了所有代码。它们还有一些,但还没有实现。

还有3个列表,每个列表包含14个项目,但这些列表不会进入代码:

key_words = ['纤维素','呼吸'血红蛋白''通气''软骨' ,' Cytoplasm' Nucleus',' Alveoli',' Amino acids',' Virus',' ;白细胞',光合作用,'气孔'疫苗'纤维']

defs = ['构成绿色植物细胞壁的坚韧物质'一种化学反应,导致能量从葡萄糖释放出来,' A物质它与氧气结合并在血液中围绕身体运动,呼吸,'坚韧,覆盖骨头末端的光滑物质,以保护它们,','化学反应发生的细胞的果冻状部分,'控制细胞内部发生的事情,“肺部的微小气囊”,“蛋白质产生”消化','最小的微生物类型,'可以吞噬细菌或制造抗体''将二氧化碳,水和光转化为葡萄糖的过程氧气','叶子下面的小孔,'死亡或非活性形式的微生物',#39;一种无法消化的营养素']

completed = [0,0,0,0,0,0,0,0,0,0,0,0,0,0]

感谢 卡勒姆

import random
option1 = random.randint(int(1), int(14))
option2 = random.randint(int(1), int(14))
option3 = random.randint(int(1), int(14))

while option1 == option2 or option1 == option3:
    placement1 = random.randint(int(1), int(3))

while option2 == option3:
    option2 = random.randint(int(1), int(3))


placement1 = random.randint(int(1), int(3))
placement2 = random.randint(int(1), int(3))
placement3 = random.randint(int(1), int(3))

while placement1 == placement2 or placement1 == placement3:
    placement1 = random.randint(int(1), int(3))

while placement2 == placement1 or placement2 == placement3:
    placement3 = random.randint(int(1), int(3))

print('What is the correct defenition for', key_words[option3])
place3 = 1

if placement1 == 1:
    print('1: ', defs[option1])
elif placement1 == 2:
    print('1: ', defs[option2])
elif placement1 == 3:
    print('1: ', defs[option3])
    place3 = '1'
if placement2 == 1:
    print('2: ', defs[option1])
elif placement2 == 2:
    print('2: ', defs[option2])
elif placement2 == 3:
    print('2: ', defs[option3])
    place3 = '2'
if placement3 == 1:
    print('3: ', defs[option1])
elif placement3 == 2:
    print('3: ', defs[option2])
elif placement3 == 3:
    print('3: ', defs[option3])
    place3 = '3'


choice = str(input('Enter 1, 2 or 3: '))
if choice == place3:
    print('Well done, correct.')
    a = completed[option3] + 1
    completed[option3] += 1
else:
    print('Inccorect. Have another look and we`ll come back later.')

2 个答案:

答案 0 :(得分:2)

在你的第一个循环中:

while option1 == option2 or option1 == option3:
    placement1 = random.randint(int(1), int(3))

您永远不会更改option1的值。如果条件为真进入循环,它将永远保持为真。您的意思是使用option1代替placement1吗?

答案 1 :(得分:1)

你永远不会突破你的第一个循环。

while option1 == option2 or option1 == option3:
    placement1 = random.randint(int(1), int(3))

条件取决于option1,option2和option3的值,它们从不在循环体中调整。如果代码进入循环,它将保留在那里。

顺便提一下,此代码还有许多其他严重问题和代码味道。我没有时间给他们所有人命名。