Python的循环有两种,一种是for...in
循环,依次把list
或tuple
中的每个元素迭代出来,第二种循环是while
循环,只要条件满足,就不断循环,条件不满足时退出循环。
下面的例子是使用while
循环计算100以内奇数和:
a = 0
b = 99
while b > 0:
a = a + b
b = b -2
print(a)
message = ''
while message != 'q':
message = input()
if message != 'q':
print(message)
上面的示例代码,在用户输入q
是退出循环,否则将循环执行打印用户输入的操作。if
语句使用户在输入退出指令q
时,不至于将'q'
打印出来。
active = True
message = ''
while active:
message = input()
if message == 'q':
active = False
else:
print(message)
我们将条件测试都放在其他地方,while
语句就只需要检查一个条件。从而可以使用程序更加的简洁易读。
break
语句可以提前结束循环,例如上一个例子,可以这样改写:
while True:
message = input()
if message == 'q':
break
else:
print(message)
在循环中可以使用continue
语句跳过当次循环,并执行下一次循环。continue
语句不会像break
语句那样不再执行余下的代码。
a = 0
while a < 10:
a = a + 1
if a % 2 == 0:
continue
print(a)
break
语句可以在循环过程中直接退出循环,而continue
语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if
语句使用。
要特别注意,不要滥用break
和continue
语句。break
和continue
会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break
和continue
语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉break
和continue
语句。
for
循环是遍历列表的有效方式,但不该在for
循环中修改列表,例如移动元素的操作,因为这会导致Python无法跟踪其中的元素。然而使用while
循环就可以在遍历时对列表进行修改。
l1 = [1,2,3,4]
l2 = []
while l1:
l = l1.pop()
l2.append(l)
print(l1)
print(l2)
输出:
[]
[4, 3, 2, 1]
可见,列表l1
中的元素已经移动到列表l2
中了。
l = [1,2,1,3,1,4,5,1]
while 1 in l:
l.remove(1)
print(l)
输出:
[2, 3, 4, 5]
d = {}
active = True
while active:
a = input('name')
b = input('answer')
d[a] = b
c = input('是否继续?y,n')
if c == 'n':
active = False
for i,j in d.items():
print(i,j)
我们让用户输入姓名和答案并将其存储在字典d
中,然后询问用户是否继续,当用户输入n
时,标志active
为False
,while
循环结束,并打印结果。