前言:
自学python过程,记录自己对代码的理解,不足之处欢迎指正。希望对初学者有所启发。
开发环境:conda version : 23.7.2 + python version : 3.11.3.final.0 + vscode :1.81.1
目录:
for...in...循环知识点:
for循环可以为序列(列表、元组、集合)中的每个项目等执行一组语句。语法格式如下:
for iterating_var in sequence: statements(s)
理解:iterating_var in sequence可看作一个in的条件判断,当迭代对象( iterating_var)在(in)序列( sequence)中时,结果为真(True),执行 一次循环体( statements(s)),否则循环结束。
for语句输出九九乘法表
1、利用for语句先输出一个9×9的乘法表
# 先输出一个9×9的九九乘法表
for j in range(1, 10): # 外循环控制行循环,内循环结束输出一行9列算式后,print()换行循环下一行
for i in range(1, 10): # 内循环控制列循环,用于控制输出每一行的9列
print(f'{i:2}×{j:2} = {i*j:2}\t', end='') # f-string格式,{i:2},2表示字符占2个宽度
print() # 默认输出换行,内循环结束后输出一个换行符,用于下一行的循环。
输出结果
2、改造一下,输出常见的99乘法表
常见的左下角形乘法表,就是上图从左上角到右下角划条线,要丢掉的是右上角,也就是比较乘号两边,左边小于等于右边的保留,左边大于右边的舍弃。
用代码说话,每一行保留 i <= j 的算式 。于是代码改造如下:
# 输出一个常见的标准九九乘法表
for j in range(1, 10):
for i in range(1, j+1): # 在嵌套循环内,将i的范围限制在1~j之间。注意range()左闭右开。
print(f'{i:2}×{j:2} = {i*j:2}\t', end='')
print()
3、继续改造,输出右上角乘法表。为了便于理解,先出结果图,再想代码。
还是那条线,这次保留的是右上角部分。
同理,代码说话,这次要保留的是 i > j 的部分;
第1步:内循环改为 for i in range(j, 10): ,保留的是 i > j 的部分算式
第2步:为了统一乘号两边左小右大,内循环 print(f'{j:}× {i:} = {i*j}\t', end='')输出,调整 i ,j 的位置
第3步:这时,虽然乘法表对了,但是输出是这样的,和我们想要的样子还是有区别的。
对照9×9的乘法表,我们发现,只要把 i <= j 部分的算式,用空格占位,那不就是想要的结果了。
第1行9列,不用空格占位,第2行,需要1个算式被占位替代,第3行需要2个占位,依此类推。
于是,在外循环体增加一条输出空格的语句。放在内循环前。
print(end='\t\t'*(j-1))
解释如下:print默认输出换行。这里end=’\t\t‘参数代替换行符。第一个\t输出一个制表符,代替原来的算式,第二个\t输出一个制表符,代替原算式后的制表符,这样就和第一行对齐了。*(j-1)表示输出 ‘\t\t’ 的次数 j-1次。
最终代码如下:
# 输出右上角乘法表
for j in range(1, 10):
print(end='\t\t'*(j-1))
for i in range(j, 10):
print(f'{j:}× {i:} = {i*j}\t', end='')
print()