Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有无限循环的情况下使用while循环(python 2.7)_Python_Python 2.7 - Fatal编程技术网

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

如何在没有无限循环的情况下使用while循环(python 2.7),python,python-2.7,Python,Python 2.7,我一直在尝试用Python2.7创建一个程序。 这个程序创建一个随机数。(nlist[r]保存在list[]中) 如果list[0]是'do'或'ge'或'gi',只需打印list程序即可结束 如果列表[0]是'mo'或'yu',则while循环开始 当list[k]=='yu'或'mo'时,循环必须停止,打印list,并结束程序。 但这最终是一个无限的while循环 这是我的密码: nlist=['do','ge','gi','yu','mo'] list=[] def playYut():

我一直在尝试用Python2.7创建一个程序。 这个程序创建一个随机数。(
nlist[r]
保存在
list[]
中)

如果
list[0]
'do'
'ge'
'gi'
,只需打印
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语句在程序的顶部声明,这是一个很好的做法。请查看此文件以获得详细解释

2) 而不是这个

如果您的_列表[0]=='do'或您的_列表[0]=='gae'或您的_列表[0]=='girl':

这看起来更优雅

如果您的\u列表[0]在某些\u列表\u中具有这些\u值:

3) 另外,不要将列表命名为list定义一些 它的变量名。对于ex您的_列表

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


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

您需要在每个循环中增加k的值 您可以通过添加

K+=1


您没有递增
k
?您的陈述2有点误导。OP的陈述非常好。另外,如果您要给出答案,请指出
list
是一个不好的变量名,而不是仅仅将其更改为
list1
@moonigrawr,谢谢您指出这一点。我有点糊涂了!!。:)
k=k+1