Python自学之利用for循环语句输出九九乘法表

前言:

自学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()

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值