#hello,我想知道为什么我的代码会在第二个while循环停止并且什么都不做
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
答案 0 :(得分:3)
您的代码进入无限循环。
两个while
循环都存在条件问题,导致它们终止。由于您的代码永远不会更改a
的值,因此第一个循环变为while 0<=degree
,因此当用户输入负值时,第一个循环终止。但是变量a
可以从您的程序中删除。
while循环会一直延长len(deg_list) >= 0
。但是,循环中的代码不会减少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
答案 1 :(得分:1)
你永远不会修改deg_list
,所以你的循环变得无限。即使删除所有元素也无济于事,因为你要与0进行比较 - 循环条件永远不会是假的。
答案 2 :(得分:1)
好。
我认为a
在开始时设置为0
,然后从未更改,因此使用deg_list[a]
执行某些操作,即列表中的第一个元素,isn'我会做很多事情。此外,您的循环条件为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
之前,您必须期望输入任何内容。
答案 3 :(得分:0)
看起来你正试图遍历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)