Python 遇到无限循环。为什么?
我遇到了一个无限循环。它不断要求Python 遇到无限循环。为什么?,python,python-3.x,Python,Python 3.x,我遇到了一个无限循环。它不断要求社交媒体的输入。我试图用结束循环,如果不是,当我用“enter”输入一个空白输入时,它会忽略它。为什么 while True: if confirm_social_media == 'n': victims.append(victim_data) continue while True: social_media = input("\nType of social media: "
社交媒体的输入
。我试图用结束循环,如果不是,当我用“enter”输入一个空白输入时,它会忽略它。为什么
while True:
if confirm_social_media == 'n':
victims.append(victim_data)
continue
while True:
social_media = input("\nType of social media: "
"\n'i' = Instagram"
"\n's' = Snapchat"
"\n't' = Twitter"
"\n'y' = Youtube"
"\n'f' = Facebook"
"\n'o' = Other"
"\nOr blank for next")
if not social_media:
break
if social_media == 'i':
iinput = input("Instagram " + str(inumbr) + ": ")
if family_members == 'm':
mother_instagram.append(iinput)
elif family_members == 'f':
father_instagram.append(iinput)
elif family_members == 'o':
other_instagram.append(iinput)
除了变量的名称有点可怕之外,为什么不为外部循环设置一个中断条件呢
您似乎正确地突破了内部循环,但没有任何代码突破外部循环(代码的第一行)无限循环是由您共享的代码顶部的第一个外部while循环引起的。您没有任何东西可以中断该循环,因此它将无限地执行内部while循环,即使您在if not social\u media:
条件中插入了break
语句来中断内部while循环,因为您没有中断外部while循环
作为一种解决方案,只需删除顶部while循环或添加另一个在代码中更改的条件,例如在if not social\u media:
中添加一个用于中断外部while循环的布尔值:
continue_loop = True
while continue_loop :
if confirm_social_media == 'n':
victims.append(victim_data)
continue
while True:
social_media = input("\nType of social media: "
"\n'i' = Instagram"
"\n's' = Snapchat"
"\n't' = Twitter"
"\n'y' = Youtube"
"\n'f' = Facebook"
"\n'o' = Other"
"\nOr blank for next")
if not social_media:
continue_loop = False
break
if social_media == 'i':
iinput = input("Instagram " + str(inumbr) + ": ")
if family_members == 'm':
mother_instagram.append(iinput)
elif family_members == 'f':
father_instagram.append(iinput)
elif family_members == 'o':
other_instagram.append(iinput)
以下是有关while循环的一些附加信息:
Python编程语言中的while循环语句只要给定条件为true,就会重复执行目标语句
如果条件从未变为FALSE,则循环将变为无限循环。使用while循环时必须小心,因为这种情况可能永远不会解析为假值。这将导致一个永不结束的循环。这样的循环称为无限循环
我建议您阅读更多关于while循环和Python的一般知识。或者是开始的好地方。您没有外部while循环的中断
,继续
意味着“再次启动循环”,而不是“在循环后继续代码”。您需要中断
。(也许;很难说,因为你没有显示社交媒体设置的位置或方式。)我们需要一个确定的答案,但我怀疑问题与你有两个无止境的循环有关。抱怨遇到无限循环。。。代码是在中构造的,而带有中断的True循环。。。不comments@SembeiNorimaki我很感谢您的建设性回答,您也承认,我们是一些正在学习python逻辑的人。感谢您的输入:)适合并修复OP问题的简单代码。但是,我会将变量命名为“continue\u loop”而不是“end\u loop”,因为当它为真时,实际上是继续循环;)@Pac0是的,我完全同意你的看法,在这种情况下,它确实更有意义,谢谢你的建议:)我现在看到了区别,它很有意义。我想我已经确保了while循环在如果不是社交媒体的话:
会变为False,然后再打破它。但这当然不适用于外环。在你的例子中它是如何构造的,这给了我一个“啊哈”的体验