2017-05-29 154 views
1

我一直在试图用python 2.7创建一个程序。 该程序创建一个随机数。 (nlist[r]保存在list[]如何使用while循环没有无限循环(python 2.7)

如果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 
+0

你是不是递增'k'增加k的值在每一个循环 你可以这样做? –

回答

1

我在你的代码中做了一些改变,我将在下面进行解释。

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)让进口声明它是很好的做法在程序的顶部声明。检查了解详细说明。

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

2)代替此

如果your_list [0] == '做' 或your_list [0] == 'GAE' 或your_list [0] =='女孩:

这样看起来更优雅。

如果your_list [0]在some_list_with_those_values:

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

4)您也可以使用休息标志变量但我更喜欢这里使用标志变量。了解它们至关重要。设置一个标志变量,其值为,并在条件发生变化时将其更改为。这样你可以退出while循环。

5)我不清楚你想用你的程序做什么。但是从你的描述中可以看出你可能想要的一个工作代码。

+1

你的陈述2有点误导。 OP的声明非常好。另外,如果你打算给出一个答案,请指出'list'是一个不好的变量名称,而不是仅仅把它改成'list1' – MooingRawr

+0

@MooingRawr谢谢你指出了man。有点糊涂了!! :) – void

1

这是你做有没有非常常见的错误,我的朋友。您必须更改循环的值k或添加break语句来停止循环。

0

您需要通过添加

K+=1 

k=k+1