九九乘法表-while循环
right = 1
while right <= 9:left = 1while left <= right:print(f'{left}x{right}={left * right}',end='\t')left += 1print()right += 1
#=============================================
#效果:
#1x1=1
#1x2=2 2x2=4
#1x3=3 2x3=6 3x3=9
#1x4=4 2x4=8 3x4=12 4x4=16
#1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
#1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
#1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
#1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
#1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
for循环
for 变量 in 可迭代对象:
循环体
enumerate(iterable,start = 0)
- 枚举
- 返回一个迭代器对象。迭代它会得到一个个元组,每个元组是由索引和对应元素构成。
- start决定了索引的起始值。
string = 'dfadg'
enu = enumerate(string) # 返回一个迭代器
print(list(enu))
#输出结果
#[(0, 'd'), (1, 'f'), (2, 'a'), (3, 'd'), (4, 'g')]str2 = '🐱🐱🐕🐕'
for i in enumerate(str2):print(i,end=' ')
#输出结果
#(0, '🐱') (1, '🐱') (2, '🐕') (3, '🐕')
for...in...else...
lst = [4, 3, 8, 532, 1]
for i in lst:print(i,end=' ')if i > 5:breakelse:print('🐱',end=' ')
#输出结果
#4 🐱 3 🐱 8
break
- 终止所在的循环
continue
- 跳过当前这次循环,继续到下一次循环
-
for i in range(1, 11):if i % 2 == 0:continue # 若if成立,则直接跳到forelse:print(i,end=' ') #输出结果 #1 3 5 7 9
列表推导式
- 格式:语句 for 子句
- 列表推导式
lst = [x ** 2 for x in range(8)]
print(lst)
#[0, 1, 4, 9]
迭代问题
-
列表迭代问题
列表内存自动管理:Python的列表会自动管理内容,当对列表插入元素或者删除元素时,列表会移动其中的元素以保证元素之间是连续的。
lst1 = [1, 2, 3]for i in lst1:lst1.remove(i)print(lst1)# [2],remove过程原列表的下标改变了lst2 = ['a', 'b', 'd', 'f']
new_lst = lst2.copy()for i in new_lst:lst2.remove(i)
print(lst2)#[]
字典、集合迭代问题
- 字典、集合在迭代时,不允许改变元数据的size
#字典迭代
info_Magic = {'Academy' : 'Gryffindor','name' : 'HarryPotter','grade' : 1}
#for循环输出键
for k in info_Magic:print(k, end=' ') #Academy name grade
print()#会报错
# for k in info_Magic:
# del info_Magic[k]
# print(info_Magic) #RuntimeError: dictionary changed size during iterationnew_d = info_Magic.copy()
for k in new_d:del info_Magic[k]print(info_Magic)
'''
for循环输出结果:
{'name': 'HarryPotter', 'grade': 1}
{'grade': 1}
{}
'''
pass语句
- pass是一个关键字,表示一个空语句,当它被执行时,不做任何操作,通常用占位符,用在当语法上需要语句但实际不需要执行任何操作的情况下使用。