【问题标题】:how to use while loop without infinite loop(python 2.7)如何在没有无限循环的情况下使用while循环(python 2.7)
【发布时间】:2017-10-30 03:07:34
【问题描述】:

我一直在尝试用 python 2.7 创建一个程序。 该程序创建一个随机数。 (nlist[r]保存在list[]中)

如果list[0]'do''ge''gi',只需打印list 即可结束程序。

如果list[0]'mo''yu',则while 循环开始。

list[k]=='yu''mo'时,循环必须停止,打印list,同时结束程序。 但这最终陷入了无限的while循环......

这是我的代码:

nlist=['do','ge','gi','yu','mo']
list=[]
def playYut():
    import random
    r=random.randrange(0,5)
    list.append(nlist[r])

playYut()

if list[0]=='do' or list[0]=='gae' or list[0]=='girl':
    for i in list:
        print i
else:
    k=0
    while list[k]:
        if list[k]=='yut' or list[k]=='mo':
            playYut()
            for i in list:
                print i
        else:
            for i in list:
                print i

【问题讨论】:

  • 你没有增加k ?

标签: python python-2.7


【解决方案1】:

我的朋友,你在那里犯了一个很常见的错误。您必须更改 k 的值以进行循环或添加 break 语句以停止循环。

【讨论】:

    【解决方案2】:

    我对您的代码进行了一些更改,我将在下面解释。

    import random
    nlist=['do','ge','gi','yu','mo']
    check_list = ['do','ge','gi']
    loop_check_list = ['yu' ,'mo' ]
    flag =1
    your_list=[]
    k=0
    def playYut():
        r=random.randrange(0,5)
        your_list.append(nlist[r])
    playYut()
    
    if your_list[0] in check_list:
        print list1
    
    elif your_list[0] in loop_check_list:
        while flag==1:
            k+=1
            playYut()
            if your_list[k] in loop_check_list:
                print your_list
                flag=0
    

    1) 让 import 语句在程序顶部声明,这是一种很好的做法。查看此内容以获取详细说明。

    In Python, what happens when you import inside of a function?

    2) 而不是这个

    如果 your_list[0]=='do' 或 your_list[0]=='gae' 或 your_list[0]=='girl':

    这样看起来更优雅。

    如果 your_list[0] 在 some_list_with_those_values 中:

    3) 也不要将列表命名为 list 定义一些 它的变量名。对于前 your_list

    4) 你也可以使用 breakflag variable 但我更喜欢在这里使用 flag 变量。了解它们是必不可少的。设置一个值为 1 的标志变量,并在条件更改时将其更改为 0。这样你就可以退出while循环了。

    5) 我不清楚你想用你的程序做什么。但根据您的描述,这是您可能想要的工作代码。

    【讨论】:

    • 您的陈述 2 有点误导。 OP的声明非常好。另外,如果您要给出答案,请指出 list 是一个错误的变量名,而不是仅仅将其更改为 list1
    • @MooingRawr 感谢您指出这一点。有点糊涂了!!。 :)
    【解决方案3】:

    你需要在每个循环中增加 k 的值 你可以通过添加来做到这一点

    K+=1
    

    k=k+1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      相关资源
      最近更新 更多