繁体   English   中英

为什么我的代码停在secound while循环中?

[英]why my code stop in secound while loop?

#hello,我很讨厌为什么我的代码在while循环中一直停在secound上并且什么都不做

print"*******************************"
a = 0
deg_list =[]
deg_list_a=[]
deg_list_b=[]
deg_list_c=[]
degree=input("Enter the students Degree:")
while a<=degree:
    deg_list.append(degree);
    degree=input("Enter the students Degree:")
print "Degree List :",deg_list
print len(deg_list)
while len(deg_list)>=0:
    if deg_list[a]>=16:
        deg_list_a.append(deg_list[a])
        x=+1
    elif 15>deg_list[a]>=10:
        deg_list_b.append(deg_list[a])
        x=+1
    else :
        deg_list_b.append(deg_list[a])
        x=+1
print deg_list_a
print deg_list_b
print deg_list_c

您的代码进入无限循环。

您的两个while循环的条件都存在问题,使它们可以终止。 由于代码从不改变的值a ,第一环路变为while 0<=degree ,所以第一环路当用户输入一个负值终止。 但是变量a可以从程序中删除。

只要len(deg_list) >= 0 ,while循环就会继续。 但是,循环中没有代码会减少deg_list的长度,因此while循环将永远持续下去。

以下代码可以帮助您正常工作:

deg_list =[]
deg_list_a=[]
deg_list_b=[]
deg_list_c=[]
degree=input("Enter the students Degree:")
while degree > 0:
    deg_list.append(degree);
    degree=input("Enter the students Degree:")
print len(deg_list)
while len(deg_list) > 0:        # Strictly greater than 0, not equal to 0.
    if deg_list[0] >= 16:
        # Use pop to access first element
        deg_list_a.append(deg_list.pop(0))    
    elif deg_list[0] >= 10:    # One comparison per statement, only.
        deg_list_b.append(deg_list.pop(0))
    else:
        deg_list_c.append(deg_list.pop(0))  # c, not b.
print deg_list_a
print deg_list_b
print deg_list_c           

您永远不会修改deg_list ,因此您的循环将变为无限。 甚至删除所有元素也无济于事,因为您要与0进行比较-循环条件永远不会为假。

好。

在我看来, a在开始时设置为0 ,然后从未更改,因此使用deg_list[a] (该列表中的第一个元素)执行的操作不会做很多事情。 另外,您的循环条件是len(deg_list) >= 0 ,并且len(deg_list)永远不会改变。

但是,您的代码还有更多基本问题。 想象一下,您正在更改deg_list的长度:在这种情况下,您将要更改正在循环的列表,这通常是(如果您不太确定自己在做什么的话)灾难的根源。 我认为您应该设想的是按照以下方式循环:

for degree in deg_list:
    if [degree fulfils some condition]:
        [do something with degree]
    elif [degree fulfils some other condition]:
        [do something else]
    ...
    else:
        [whatever]

最后,从您的比较看来,“度”都是小整数。 您可能需要测试一下-这是用户输入,并且您必须期望输入会抛出任何错误-在执行诸如if degree >= 16

似乎您正在尝试循环deg_list的所有成员,但是您正在等待deg_list为空,并且每次循环时,您都递增“ x”,甚至从未读取。

如果您确实要遍历deg_list,请在第二个循环中尝试以下方法:

for degree in deg_list:
    if degree >= 16:
        deg_list_a.append(degree)
    elif degree >= 10:
        deg_list_b.append(degree)
    else :
        deg_list_c.append(degree)

暂无
暂无

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

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