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,然后再打破它。但这当然不适用于外环。在你的例子中它是如何构造的,这给了我一个“啊哈”的体验