# while语句结构
while 条件:
执行语句
# 方法一:用除法
i = 1
sum = 0
while i <= 100:
if i // 10 != 6 and i % 10 != 6:
sum += i
i += 1
print(sum)
# 终端显示
3961
# 方法二、用字符串
i = 1
sum = 0
while i <= 100:
if '6' not in str(i): # 此处用index,count都可以达到同样的效果;
sum += i
i += 1
print(sum)
# 终端显示
3961
当while后面直接是值,且值的判定为True的时候,while即实现死循环,即无终止的循环;
# 例如
a = 1
while 0:
print(a)
print('执行0') # 终端显示不执行
while 1:
print(a)
print('执行1') # 不停的执行
break:使循环强行中止;
# 例如
while 条件:
语句
else:
语句
当while正常结束后,执行else,如果while被break中止,则不会执行else;
# 例如,有break
a = 1
while a <= 1:
print(a)
a += 1
break
else:
print('此行输出1')
# 终端显示
1
# 例如 没有break
a = 1
while a <= 1:
print(a)
a += 1
else:
print('此行输出0')
# 终端显示
1
此行输出0
用while循环嵌套写一个九九乘法表
# 例如
L = 1
while L < 10:
R = 1
while R <= L:
print(f'{L}x{R}={L*R}', end='\t')
R += 1
L += 1
print()
# 终端显示
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
注意:
如果变为
# 例如
L = 1
while L < 10:
R = 1
while R <= L:
print(f'{L} x {R}={L*R}', end='\t') # 此处{L} x {R}中x左右各加一个空格
R += 1
L += 1
print()
# 终端显示
1 x 1=1
2 x 1=2 2 x 2=4
3 x 1=3 3 x 2=6 3 x 3=9
4 x 1=4 4 x 2=8 4 x 3=12 4 x 4=16
5 x 1=5 5 x 2=10 5 x 3=15 5 x 4=20 5 x 5=25
6 x 1=6 6 x 2=12 6 x 3=18 6 x 4=24 6 x 5=30 6 x 6=36
7 x 1=7 7 x 2=14 7 x 3=21 7 x 4=28 7 x 5=35 7 x 6=42 7 x 7=49
8 x 1=8 8 x 2=16 8 x 3=24 8 x 4=32 8 x 5=40 8 x 6=48 8 x 7=56 8 x 8=64
9 x 1=9 9 x 2=18 9 x 3=27 9 x 4=36 9 x 5=45 9 x 6=54 9 x 7=63 9 x 8=72 9 x 9=81
{L} x {R}中x左右各加一个空格,结果将截然不同,加空格之后,2 x 1=1占位7个,与2 x 2=4之间的制表符没有问题,制表符会从下一个8位开始对齐,但是一旦结果成为两位数,4 x 3=12将占位8个,也就是占满8个位,再有制表出现,则直接跳8个字符开始对齐,故出现上面的情况;
# 例如
# for语句格式
for 变量 in 可迭代对象:
语句
# for...else...语句格式
for 变量 in 可迭代对象:
语句
else:
语句 # 注意for else语句和while else语句一样,当循环被中止时,不执行else
九九乘法表的for写法:
# 例如
for i in range(1, 10):
for j in range(1, i+1):
print(f'{i}x{j}={i*j}', end='\t')
print()
# 终端显示
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
注意:
for i in iterable中,iterable是可迭代对象,同时可以对变量进行多个赋值,比如:
# 例如
for i,j in zip('abcde', '12345'):
print(i, j)
for a in zip('abcde', '12345'):
print(a)
# 终端显示
# 输出i,j
a 1
b 2
c 3
d 4
e 5
# 以下为输出a
('a', '1')
('b', '2')
('c', '3')
('d', '4')
('e', '5')
注意:
zip里面是多个可迭代对象,即里面直接加数据,zip返回迭代器,迭代器只能使用一次,如果使用了一半,则后面只能调用后面的一半,已经使用过一次的一半不再支持使用;
可以是zip('abcde', '12345')
不可以是zip(['abcde', '12345'])
如果zip里面是两个列表,则会将其看做整体;
# 例如
ex1 = ['abcde']
ex2 = ['12345']
for a in zip(ex1, ex2):
print(a)
# 终端显示
('abcde', '12345')
# 例如
i = 1
res = zip('abcde', '12345') # zip返回值是迭代器,是可迭代对象
for a in res:
print(a)
i += 1
if i > 3:
break
print('---------分隔线--------------')
print(list(res))
# 终端显示
('a', '1')
('b', '2')
('c', '3')
---------分隔线--------------
[('d', '4'), ('e', '5')] # 之前zip没有用完,再一次调用时,只能调用未使用过的部分
enumrate(iterable, start = 0):枚举,返回一个迭代器,将iterable中的元素一个一个拿出来并与索引组合,start决定了输出结果索引开始的序号;
# 例如
str = 'abcdefg'
res = enumerate(str)
print(list(res))
res1 = enumerate(str, 100)
print(list(res1))
# 终端显示
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]
[(100, 'a'), (101, 'b'), (102, 'c'), (103, 'd'), (104, 'e'), (105, 'f'), (106, 'g')]