鱼C论坛

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

[已解决]可以解释一下为什么九九乘法表的代码是怎么敲出来的吗

[复制链接]
发表于 2020-2-6 13:32:07 | 显示全部楼层 |阅读模式

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

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

x
课后作业里的九九乘法表提供的答案是这样的:
for i in range(1, 10):
    for j in range(1, i+1):
        print(i,"x", j,"=",i*j,end=" ")
    print("\n")


可以帮我解释一下 i 和j 分别是什么意思,整个的思考逻辑是怎样的吗?

感谢!
最佳答案
2020-2-6 13:41:44
本帖最后由 Judie 于 2020-2-6 00:58 编辑

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. #以此类推
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-6 13:33:46 | 显示全部楼层
如果 i 是 2,j 就是 1、2(range(1, 2+1));
如果 i 是 3,j 就是 1、2、3(range(1, 3+1));
如果 i 是 4,j 就是 1、2、3、4(range(1, 4+1));
……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 13:41:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Judie 于 2020-2-6 00:58 编辑

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. #以此类推
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 14:33:55 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-6 14:40 编辑

     1、计算机硬件特性决定了乘法口诀表必须是沿从左到右的方向横向打印;
     2、总共需要打印 9 行,每行打印的项数与行号相同,第 1 行打印 1 项,第 9 行需要打印 9 项;
     3、每一项需要有两个变量分别表达前因数和后因数,i 代表后因数,j 代表前因数,每一项的表达是 j x i;
     4、代码总体上是一个嵌套循环,for i 是外层循环,for j 是内层循环,外层循环控制行,内层循环控制项,例如,外层循环 9 次,表示总共会打印 9 行内容,内层循环 9 次,表示在这一行打印 9 项。
     5、外层循环从 i = 1 开始,进入内层循环,j 的变化范围是 1 ~ 1,只循环 1 次,j 的值是 1,打印出第 1 行的内容 1 x 1;回到外层循环,i = 2,再进入内层循环,j 的变化范围是 1 ~ 2,循环 2 次,j 的值分别是 1、2,打印出第 2 行的内容 1 x 2 , 2 x 2;再次回到外层循环。。。如此往复,直到外层循环 i = 9 时,j 的变化范围是 1 ~ 9,循环 9 次,j 的值依次分别是 1、2、3、4、5、6、7、8、9,打印出第 9 行的内容 1 x 9、2 x 9、3 x 9、4 x 9、5 x 9、6 x 9、7 x 9、8 x 9 、9 x 9 ,然后结束循环。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 03:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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