鱼C论坛

 找回密码
 立即注册
查看: 3099|回复: 3

[已解决]python制作倒序的乘法表

[复制链接]
发表于 2023-2-2 01:13:09 | 显示全部楼层 |阅读模式
1鱼币
>>> i = 1
>>> while i <= 9:
>>>     j = 9
>>>     while j >= i:
>>>         print(j, "*", i, "=", j * i, end=' ')
>>>         j -= 1
>>>     print()
>>>     i += 1




问一下大家,这个倒数第二行代码的print()有什么用呢?


为什么不能是这样子?(为什么会有重复的呢?)
i = 1
while i <= 9:
    j = 9
    while i <= j:
        print(j, "*", i, "=", j * i, end=' ')
        j -= 1
    print(j,"*",i,"=",j*i,sep="" )
    i += 1
最佳答案
2023-2-2 01:13:10
print()的作用是换行
相当于传入了一个空的字符串print("",end="\n"),那个end参数默认为换行符"\n",
所以每次在打印一个空字符串(什么都不打印)的同时附带一个换行符,把它换行了
所以有换行的作用。

至于为什么不能用你的这段代码,
首先看一下有两处不同的地方,
i <= j。。没什么好说的,其实就是原代码j >= i,这俩一样的

print(j,"*",i,"=",j*i,sep="" )
这个的话,首先其实仍然起到了换行的作用,
end仍然是换行符"\n"没有被修改,所以每次执行都会换行
但是运行之后却会发现会多出来一坨东西!
看运行结果:
9 * 1 = 9 8 * 1 = 8 7 * 1 = 7 6 * 1 = 6 5 * 1 = 5 4 * 1 = 4 3 * 1 = 3 2 * 1 = 2 1 * 1 = 1 0*1=0
9 * 2 = 18 8 * 2 = 16 7 * 2 = 14 6 * 2 = 12 5 * 2 = 10 4 * 2 = 8 3 * 2 = 6 2 * 2 = 4 1*2=2
9 * 3 = 27 8 * 3 = 24 7 * 3 = 21 6 * 3 = 18 5 * 3 = 15 4 * 3 = 12 3 * 3 = 9 2*3=6
9 * 4 = 36 8 * 4 = 32 7 * 4 = 28 6 * 4 = 24 5 * 4 = 20 4 * 4 = 16 3*4=12
9 * 5 = 45 8 * 5 = 40 7 * 5 = 35 6 * 5 = 30 5 * 5 = 25 4*5=20
9 * 6 = 54 8 * 6 = 48 7 * 6 = 42 6 * 6 = 36 5*6=30
9 * 7 = 63 8 * 7 = 56 7 * 7 = 49 6*7=42
9 * 8 = 72 8 * 8 = 64 7*8=56
9 * 9 = 81 8*9=72

可见每行最后明显多出来了一个与其他正常结果不同的东西
其中有空格的“9 * 8 = 72”“8 * 8 = 64”应该是print(j, "*", i, "=", j * i, end=' ')打印的,
没有空格的   “7*8=56”就是print(j,"*",i,"=",j*i,sep="" )打印的了。

那么为什么呢?
原本两个都有end="\n",已经起到应有的作用了,
但是改后的代码要多打印什么什么j*i,其实是多余的,
删掉就完美运行了

另外对于print的参数end不理解的话可以参考甲鱼的讲解戳这里
如果问题已经得到解答,请设置最佳答案~~

最佳答案

查看完整内容

print()的作用是换行。 相当于传入了一个空的字符串print("",end="\n"),那个end参数默认为换行符"\n", 所以每次在打印一个空字符串(什么都不打印)的同时附带一个换行符,把它换行了 所以有换行的作用。 至于为什么不能用你的这段代码, 首先看一下有两处不同的地方, ①i = i,这俩一样的 ②print(j,"*",i,"=",j*i,sep="" ) 这个的话,首先其实仍然起到了换行的作用, end仍然是换行符"\n"没有被修改,所以每次执行 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-2 01:13:10 | 显示全部楼层    本楼为最佳答案   
print()的作用是换行
相当于传入了一个空的字符串print("",end="\n"),那个end参数默认为换行符"\n",
所以每次在打印一个空字符串(什么都不打印)的同时附带一个换行符,把它换行了
所以有换行的作用。

至于为什么不能用你的这段代码,
首先看一下有两处不同的地方,
i <= j。。没什么好说的,其实就是原代码j >= i,这俩一样的

print(j,"*",i,"=",j*i,sep="" )
这个的话,首先其实仍然起到了换行的作用,
end仍然是换行符"\n"没有被修改,所以每次执行都会换行
但是运行之后却会发现会多出来一坨东西!
看运行结果:
9 * 1 = 9 8 * 1 = 8 7 * 1 = 7 6 * 1 = 6 5 * 1 = 5 4 * 1 = 4 3 * 1 = 3 2 * 1 = 2 1 * 1 = 1 0*1=0
9 * 2 = 18 8 * 2 = 16 7 * 2 = 14 6 * 2 = 12 5 * 2 = 10 4 * 2 = 8 3 * 2 = 6 2 * 2 = 4 1*2=2
9 * 3 = 27 8 * 3 = 24 7 * 3 = 21 6 * 3 = 18 5 * 3 = 15 4 * 3 = 12 3 * 3 = 9 2*3=6
9 * 4 = 36 8 * 4 = 32 7 * 4 = 28 6 * 4 = 24 5 * 4 = 20 4 * 4 = 16 3*4=12
9 * 5 = 45 8 * 5 = 40 7 * 5 = 35 6 * 5 = 30 5 * 5 = 25 4*5=20
9 * 6 = 54 8 * 6 = 48 7 * 6 = 42 6 * 6 = 36 5*6=30
9 * 7 = 63 8 * 7 = 56 7 * 7 = 49 6*7=42
9 * 8 = 72 8 * 8 = 64 7*8=56
9 * 9 = 81 8*9=72

可见每行最后明显多出来了一个与其他正常结果不同的东西
其中有空格的“9 * 8 = 72”“8 * 8 = 64”应该是print(j, "*", i, "=", j * i, end=' ')打印的,
没有空格的   “7*8=56”就是print(j,"*",i,"=",j*i,sep="" )打印的了。

那么为什么呢?
原本两个都有end="\n",已经起到应有的作用了,
但是改后的代码要多打印什么什么j*i,其实是多余的,
删掉就完美运行了

另外对于print的参数end不理解的话可以参考甲鱼的讲解戳这里
如果问题已经得到解答,请设置最佳答案~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-2 07:49:40 | 显示全部楼层
倒数第二行print起到换行的作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-2 11:04:52 | 显示全部楼层
第一个问题:print是起到换行作用
不过我很好奇为什么不是等于号,不然您这个程序好像会一片空白。
如果把 <= 改成 =
运行程序后,i=1,打印1*9,1*8,1*7……1*1
i=j了,换行
i+1,j-1,打印2*8,2*7,2*6……2*2
以此类推
如果答案对您有帮助,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表