[英]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.