鱼C论坛

 找回密码
 立即注册
查看: 4142|回复: 14

[已解决]python课后题求助

[复制链接]
发表于 2022-10-20 21:24:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第四讲的课后题,打印一个九九乘法表,
>>> for i in range(1, 10):
...     for j in range(1, i+1):
...         print(i, "x", j, "=", i * j, end=' ')
...     print("\n")

想问问各位大佬为什么打印出来的九九乘法表会自动换行,而不是一直横向或纵向排列的。
还有就是最后两行为什么都需要print()函数,而不能用一个包含
最佳答案
2022-10-21 09:29:11


第3句中的 end=" " 作用:在一行打印,不换行

第4句中的 print( ) 作用:需要换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-20 21:40:17 From FishC Mobile | 显示全部楼层
第一个print是不换行输出
第二个print专门负责换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-20 21:53:27 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-21 07:43 编辑
for i in range(1, 10):
    print(1 , "x" , i , "=%2d" %  i , sep = '' , end = '')
    for j in range(2 , i + 1):
         print('  ' , j , "x" , i , "=%2d" % (i * j) , sep = '' , end = '')
     print()        # 为本行输出画上句号,空 print() 足矣,加 '\n' 属于画蛇添足,反而影响美观。
        运行实况:
>>> for i in range(1, 10):
    print(1 , "x" , i , "=%2d" % i  , sep = '' , end = '')
    for j in range(2 , i + 1):
         print('  ' , j , "x" , i , "=%2d" % (i * j) , sep = '' , end = '')
     print()

     
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
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 09:29:11 | 显示全部楼层    本楼为最佳答案   


第3句中的 end=" " 作用:在一行打印,不换行

第4句中的 print( ) 作用:需要换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 10:13:36 | 显示全部楼层
wp231957 发表于 2022-10-20 21:40
第一个print是不换行输出
第二个print专门负责换行

那这个换行的条件是什么,就是出现什么情况才会换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 10:14:28 | 显示全部楼层
dragov 发表于 2022-10-21 09:29
第3句中的 end=" " 作用:在一行打印,不换行

第4句中的 print( ) 作用:需要换行

那这个换行需要什么条件吗,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 10:15:30 | 显示全部楼层

"=%2d" %  
请问上面那个代码是什么意思啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 10:22:22 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-21 10:29 编辑
乔治爱啃脚趾 发表于 2022-10-21 10:15
"=%2d" %  
请问上面那个代码是什么意思啊

 "=%2d" % (i * j) 

      把表达式 i * j 的值以十进制整数 2 位域宽的形式注入到字符串中 %2d 的位置,2 位域宽的意思是,被注入到字符串中 i * j 的值占用 2 个字符宽度,如果 i * j 的值不足 2 位,就在其前方用 1 个空格填充。例如,如果 i * j 的值是 5,那么,注入后的字符串就是 '= 5',之所以要这么安排 2 位域宽,是因为部分乘积是 2 位数,这样,可以让它们上下对齐,比较美观。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 10:49:05 | 显示全部楼层
本帖最后由 yangmiao07 于 2022-10-21 10:58 编辑

查阅https://fishc.com.cn/forum.php?m ... peid%26typeid%3D768,可以看到:print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False),
参数end='\n':指定最后的结束符,默认是换行符('\n'),第一个print相当于我们将\n换成空格,所以就不换行了;第二个print没有修改end参数保持默认换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 11:29:37 | 显示全部楼层
第三行:逐个打j for range(1,i+1),
比如i=5 的时候,j 就是1,2,3,4,5,
然后逐个打印5x1=5  不换行 继续显示 5x2=10  5x3=15  5x4=20  5x5=25
“x”就是乘号
“=”就是等号
end“  ”,end 表示不换行, “”引号里面是有空格的,也就是几个算术式之间不换行,用空格隔开

好像这样的乘法表 反着,我都是用一五得五二五一十,也就是小的数在前面,就是说1x5=5  2x5=10这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 17:21:20 | 显示全部楼层
乔治爱啃脚趾 发表于 2022-10-21 10:14
那这个换行需要什么条件吗,


不需要条件的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-21 18:55:15 | 显示全部楼层

不是,是python,他是怎么识别出来需要换行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-21 21:04:44 From FishC Mobile | 显示全部楼层
乔治爱啃脚趾 发表于 2022-10-21 18:55
不是,是python,他是怎么识别出来需要换行的

python 遇到语句 print (  ),就会自动换行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-22 01:41:17 From FishC Mobile | 显示全部楼层
我想问那假如后面再加一个print(),是不是再加一个换行符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-22 08:08:07 | 显示全部楼层
魏立选 发表于 2022-10-22 01:41
我想问那假如后面再加一个print(),是不是再加一个换行符

正确

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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