继续第七章循环语句(while循环、pass、enumerate对象循环解析)
一、while循环会一直执行直到条件运算为False才会离开循环,所以设计while循环时一定要设计一个条件可以离开循环,相当于让循环结束。一般while循环常应用在不知道循环何时可以结束的状况,for循环在使用时是早已经知道循环即将执行的次数。它的语法格式如下:
while 条件判断
程序代码区块
msg1 = '人机对话,我会重复你输入的对话'
msg2 = '输入q可以结束对话'
msg = msg1 + '\n' + msg2 + '\n' + '='
input_msg = ''
while input_msg != 'q':
input_msg = input(msg)
if input_msg != 'q':
print(input_msg)
while循环也允许嵌套循环,和for循环一样,也要注意缩进:
#使用while循环打印九九乘法表
i = 1
while i <= 9:
j = 1
while j<=i:
print("%d*%d=%-3d" % (i, j, i*j), end="") # %-3d表示左对齐占3个字符位,不换行输出
j += 1
print() #换行输出
i += 1
和for循环一样,while循环同样可以包含break或者continue关键字,含义和之前介绍的相同,break代表跳出while循环,continue代表跳过本次循环,继续下一次循环
msg1 = '人机对话,我会重复你输入的对话'
msg2 = '输入q可以结束对话'
msg = msg1 + '\n' + msg2 + '\n' + '='
while True:
input_msg = input(msg)
if input_msg == 'q':
break
else:
print(input_msg)
#列出1-10之间的偶数
n = 0
while n <= 10:
n += 1
if n % 2 == 1:
continue
print(n)
while循环的条件表达式也可与对象(列表、元组或字典)配合使用:
buyers = [['james', 1030],['curry', 893],
['durant', 2050],['jordan', 990],
['david', 2110]]
goldbuyers = []
vipbuyers = []
while buyers: #只要列表不为空,就会一直循环执行
buyer = buyers.pop()
if buyer[1] >= 1000: #购买金额在1000以上为vip买家
vipbuyers.append(buyer)
else:
goldbuyers.append(buyer)
print("VIP 买家资料", vipbuyers)
print("Gold买家资料", goldbuyers)
二、pass关键字代表什么事也不做,相当于一个空语句。pass有时候会用在设计一个循环或函数尚未完成时,先放pass,未来再用完整程序代码取代
nums = [1, 2, 3]
for num in nums:
pass
三、enumerate( )方法可以将iterable类数值的元素用计数值与元素配对方式传回,返回的数据称enumerate对象。其中iterable类数值可以是列表(list)、元组(tuple)、集合(set)等。它的语法格式如下:obj = enumerate(iterable[, start = 0])。未来我们可以使用list( )将enumerate对象转成列表,使用tuple( )将enumerate对象转成元组。
drinks = ['coffee', 'tea', 'wine']
enum_drinks = enumerate(drinks) #获取enumerate对象,起始值默认是0
print(enum_drinks) #直接打印该对象,输出是其内存地址
print(type(enum_drinks)) #输出该对象类型
print()
print("转成列表输出,初始值是0: ", list(enum_drinks)) #列表形式输出配对值
enum_drinks = enumerate(drinks, start = 10)
print("转成列表输出,初始值是10: ", list(enum_drinks)) #列表形式输出配对值
enum_drinks = enumerate(drinks)
print("转成元组输出,初始值是0: ", tuple(enum_drinks)) #列表形式输出配对值
enum_drinks = enumerate(drinks, start = 10)
print("转成元组输出,初始值是10: ", tuple(enum_drinks)) #列表形式输出配对值
print()
#for循环解析enumerate对象
for drink in enumerate(drinks): #enumerate对象内部实际是一个元组
print(drink)
#由于enumerate对象是配对存在,可以用2个变量遍历这个对象
for count, drink in enumerate(drinks):
print(count, drink)
print()
for drink in enumerate(drinks, 10):
print(drink)
for count, drink in enumerate(drinks, 10):
print(count, drink)