繁体   English   中英

如何在没有无限循环的情况下使用while循环(python 2.7)

[英]how to use while loop without infinite loop(python 2.7)

我一直在尝试用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的值以进行循环或添加break语句以停止循环。

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

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语句在程序顶部声明是一个好习惯。 查看此以获取详细说明。

在Python中,当您导入函数内部时会发生什么?

2)代替这个

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

这看起来更优雅。

如果your_list [0]在some_list_with_those_values中:

3)亦代替命名列表作为列表为它定义一些变量名。 对于前your_list

4)您也可以使用breakflag变量,但是我更喜欢在这里使用flag变量。 了解它们至关重要。 将标志变量设置为值1,并在条件更改时将其更改为0 这样,您可以退出while循环。

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

您需要在每个循环中增加k的值,方法是添加

K+=1

要么

k=k+1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM