首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(!)在比较变量时会无休止地循环,我不知道为什么?

(!)在比较变量时会无休止地循环,我不知道为什么?
EN

Stack Overflow用户
提问于 2014-03-12 01:39:10
回答 2查看 46关注 0票数 0

我创建了这段代码来在3个不同的地方得到3个不同的选项。这实际上是一个闪存卡程序,我希望它能工作,但我做不到。它进入了一个无尽的循环,我不知道为什么。可能还有其他问题,但我还没有解决,但无论如何请告诉我。保留sam变量的名称,这样我就可以很容易地理解。我已经附上了所有的代码。它们是更多的,但它还没有实现。

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

key_words =‘纤维素’,‘呼吸’,‘血红蛋白’,‘通气’,‘软骨’,‘细胞质’,‘细胞核’,‘肺泡’,‘氨基酸’,‘病毒’,‘白细胞’,‘光合作用’,‘气孔’,‘疫苗’,‘纤维’

defs =“构成绿色植物细胞壁的坚韧物质”,“导致葡萄糖释放能量的化学反应”,“一种与氧气结合并在血液中携带氧气的物质”,“呼吸”,“坚韧、光滑的物质覆盖在骨骼末端以保护它们”,“细胞中发生化学反应的果冻状部分”,“控制细胞内发生化学反应的部分”,“肺部的微小气囊”,“蛋白质消化时产生的”,“最小类型的微生物”,“可以吞噬细菌或产生抗体”,“将二氧化碳、水和光线转化为葡萄糖和氧气的过程”,“叶子背面的小孔”,“死亡或不活跃的微生物”,“无法消化的营养物质”。

已完成= 0,0,0,0,0,0,0,0,0,0,0,0,0

谢谢Callum

代码语言:javascript
复制
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.')
EN

回答 2

Stack Overflow用户

发布于 2014-03-12 01:43:05

在您的第一个循环中:

代码语言:javascript
复制
while option1 == option2 or option1 == option3:
    placement1 = random.randint(int(1), int(3))

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

票数 2
EN

Stack Overflow用户

发布于 2014-03-12 01:44:05

你永远不会跳出你的第一个循环。

代码语言:javascript
复制
while option1 == option2 or option1 == option3:
    placement1 = random.randint(int(1), int(3))

该条件取决于option1、option2和option3的值,这些值永远不会在循环体中调整。如果代码进入循环,它将停留在那里。

顺便说一句,这段代码还有许多其他严重的问题和代码味道。我没有时间给他们全部命名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22332384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档