鱼C论坛

 找回密码
 立即注册
查看: 2391|回复: 10

[已解决]求助!新版python教程里004讲课后题动动手1题

[复制链接]
发表于 2020-3-16 05:57:29 | 显示全部楼层 |阅读模式

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

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

x
用下面代码打印一个99乘法表
>>> for i in range(1, 10):
...     for j in range(1, i+1):
...         print(i, "x", j, "=", i * j, end=' ')
...     print("\n")



  1. for i in range(1,10):
  2.         for j in range(1,i+1):
  3.                 [color=Red]print(i,"x",j,"=",i*j,end='')
  4.         print("\n")[/color]

  5. 1 x 1 = 1

  6. 2 x 1 = 22 x 2 = 4

  7. 3 x 1 = 33 x 2 = 63 x 3 = 9

  8. 4 x 1 = 44 x 2 = 84 x 3 = 124 x 4 = 16

  9. 5 x 1 = 55 x 2 = 105 x 3 = 155 x 4 = 205 x 5 = 25

  10. 6 x 1 = 66 x 2 = 126 x 3 = 186 x 4 = 246 x 5 = 306 x 6 = 36

  11. 7 x 1 = 77 x 2 = 147 x 3 = 217 x 4 = 287 x 5 = 357 x 6 = 427 x 7 = 49

  12. 8 x 1 = 88 x 2 = 168 x 3 = 248 x 4 = 328 x 5 = 408 x 6 = 488 x 7 = 568 x 8 = 64

  13. 9 x 1 = 99 x 2 = 189 x 3 = 279 x 4 = 369 x 5 = 459 x 6 = 549 x 7 = 639 x 8 = 729 x 9 = 81
复制代码



提问1:标红的那两个print怎么翻译,看不懂啊!!!!为什么第二个print里还要加换行符呢?
提问2:这个九九乘法表,两个式子间没有间距,这个有没有办法改进呢?
最佳答案
2020-3-16 09:14:33
问题1:标红的那两个print怎么翻译,看不懂啊!!!!为什么第二个print里还要加换行符呢?
回答:print 可以同时输出多个部分的内容,各个部分之间以逗号隔开,你的第一个print就是这种形式,print(i, "x", j, "=", i * j, end=' ')第一项是一个变量i,第二项是字符"×",第三项是变量j,第四项是变量i*j,最后是自定义结尾字符end=‘’。内层for循环打印一行乘法口诀,内层循环结束后使用print("\n")输出回车换行,为下次循环做准备(下次内层循环要打印下一行乘法口诀)。
问题2:这个九九乘法表,两个式子间没有间距,这个有没有办法改进呢?
回答,可以改进,第一个print的结尾end="  "使用若干个空格就可以隔开了。但是为了整齐可以使用end="\t"。"\t"是从输出的第一个字符开始到输出的结尾是8个字符的整数倍。若以你现在写的方式print(i, "x", j, "=", i * j, end=' ')各个部分之间会有一个空格,会不太好看。帮你修改了一下。
  1. for i in range(1, 10):
  2.     for j in range(1, i+1):
  3.         print('%d×%d=%d'%(i,j,i*j),end='\t')
  4.     print("\n")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-16 07:31:43 From FishC Mobile | 显示全部楼层

回帖奖励 +1 鱼币

逗号连接字符串,实在不知道该如何解释
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 07:32:01 | 显示全部楼层
本帖最后由 Judie 于 2020-3-15 18:34 编辑

range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:
  1. range(start, stop[, step])
复制代码



参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

range()是一个函数, for i in range () 就是给i赋值:
比如 for i in range (1,3):
就是把1,2依次赋值给i

例如,range(1,5)给出序列[1, 2, 3, 4]。默认情况下,range 步距取为1。如果我们提供第三个数字,range那么它变成了步距。例如range(1,5,2)得到[1,3]。
for循环然后遍历这个范围,for i in range(1,5)相当于 for i in [1, 2, 3, 4],这就像把序列中的每一个数(或对象)分配给i,一次一个,然后为每个i值执行该语句块。


  1. for i in range(1,10): # i = 1,2,3,4,5,6,7,8,9
  2.     for j in range(1,i+1):
  3.         print(i,"x",j,"=",i*j,end=" ")
  4.     print('\n')

  5. # 第一次i的for循环 即 i=1
  6. # for j in range (1,i+1) 即 for j in range(1,2) 即 j=1
  7. # 第一次j的for循环 即 j=1
  8. # print(i,"x",j,"=",i*j,end=" ") 即 print(1,"x",1,"=",i*j,end=" ") 即 打印1 x 1 = 1空格结尾
  9. # j的for循环结束
  10. # print('\n') 另起一行

  11. # 第二次i的for循环 即 i=2
  12. # for j in range (1,i+1) 即 for j in range(1,3) 即 j= 1,2
  13. # 第一次j的for循环 即 j=1
  14. # print(i,"x",j,"=",i*j,end=" ") 即 print(2,"x",1,"=",i*j,end=" ") 即 打印2 x 1 = 2空格结尾
  15. # 第二次j的for循环 即 j=2
  16. # print(i,"x",j,"=",i*j,end=" ") 即 print(2,"x",2,"=",i*j,end=" ") 即 打印2 x 2 = 4空格结尾
  17. # j的for循环结束
  18. # print('\n') 另起一行

  19. #以此类推
复制代码

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
板砖丶 + 5 + 3 请不要无意义灌水!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-16 07:33:58 From FishC Mobile | 显示全部楼层
end后面变成空格,一个空格不过瘾你就来2个或更多

你要打印的是矩阵,不需要换行吗,那个单独print就是了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 09:14:33 | 显示全部楼层    本楼为最佳答案   
问题1:标红的那两个print怎么翻译,看不懂啊!!!!为什么第二个print里还要加换行符呢?
回答:print 可以同时输出多个部分的内容,各个部分之间以逗号隔开,你的第一个print就是这种形式,print(i, "x", j, "=", i * j, end=' ')第一项是一个变量i,第二项是字符"×",第三项是变量j,第四项是变量i*j,最后是自定义结尾字符end=‘’。内层for循环打印一行乘法口诀,内层循环结束后使用print("\n")输出回车换行,为下次循环做准备(下次内层循环要打印下一行乘法口诀)。
问题2:这个九九乘法表,两个式子间没有间距,这个有没有办法改进呢?
回答,可以改进,第一个print的结尾end="  "使用若干个空格就可以隔开了。但是为了整齐可以使用end="\t"。"\t"是从输出的第一个字符开始到输出的结尾是8个字符的整数倍。若以你现在写的方式print(i, "x", j, "=", i * j, end=' ')各个部分之间会有一个空格,会不太好看。帮你修改了一下。
  1. for i in range(1, 10):
  2.     for j in range(1, i+1):
  3.         print('%d×%d=%d'%(i,j,i*j),end='\t')
  4.     print("\n")
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
板砖丶 + 1 + 1 + 1

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-16 15:52:45 | 显示全部楼层
Judie 发表于 2020-3-16 07:32
range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:

感谢回答!对于第一个提问解释的非常清楚明了!!!
谢谢啦lol
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-16 16:02:07 | 显示全部楼层
sunrise085 发表于 2020-3-16 09:14
问题1:标红的那两个print怎么翻译,看不懂啊!!!!为什么第二个print里还要加换行符呢?
回答:print  ...

  1. print(i,"x",j,"=",i*j,end='     ')
  2. #x是字符,有什么意思,怎么用呢?
  3. #=是字符,有什么意思,怎么用呢?
  4. print('%d×%d=%d'%(i,j,i*j),end='\t')
  5. #百分号跟d,我还没学到那么远(手动狗头),容我学习一下再来回顾
复制代码

——————————
以上,感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-16 16:08:02 | 显示全部楼层
板砖丶 发表于 2020-3-16 16:02
——————————
以上,感谢!

不客气,最近我正在写一个帖子。估计今晚应该能写完,是有关print的帖子。到时候你可以看看。
学习不要跳跃,一步步扎扎实实的学,否则的确会有很多不懂的地方。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 15:42:29 | 显示全部楼层
Judie 发表于 2020-3-16 07:32
range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:

多谢解惑,非常清楚明白,萌新再次感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 16:42:42 | 显示全部楼层

学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-8 04:10:09 | 显示全部楼层
Judie 发表于 2020-3-16 07:32
range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:

多谢大佬!答案里第二个print我也没懂,看了大佬的解释才明白不是print函数的问题,根源在for循环上~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 16:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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