鱼C论坛

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

[已解决]python新手求助

[复制链接]
发表于 2022-7-12 19:27:31 | 显示全部楼层 |阅读模式

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

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

x
刚学完小甲鱼第四讲(这个是课后作业),请问一下,为什么下面这行代码为啥会打印出来99乘法表。
for i in range(1, 10):
    for j in range(1, i+1):
        print(i, "x", j, "=", i * j, end=' ')
    print("\n")

这不是范围一到十吗,为什么是99乘法表。。。。
最佳答案
2022-7-12 20:54:49
1822989620 发表于 2022-7-12 20:43
啊,我应该懂了,也就是说就算j的实际范围是1-10,但是他也只能取到9.所以说,for j in range(1, i+1)=fo ...



刚刚的一切都是建立在i取最大值9的基础上,如果i取3,则for j in range(1,4),j最高可以取到3
所以不能说for j in range(1, i+1)=for j in range(1, 10)
你要这样说就必须有i=9,也就是i去最大值这个前提
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-12 19:35:17 | 显示全部楼层
range的范围包括头但不包括尾,range(1,10)的范围其实是1-9
>>> for i in range(1,10):
...     print(i)
...
1
2
3
4
5
6
7
8
9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-12 20:19:01 | 显示全部楼层
“x”“=”是字符不是运算符,另外俩循环的缩进不一致,运行次序不是一致的,比如i=5,j循环就是要1-5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-12 20:22:28 | 显示全部楼层
函数语法
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-12 20:26:27 | 显示全部楼层
临时号 发表于 2022-7-12 19:35
range的范围包括头但不包括尾,range(1,10)的范围其实是1-9

那如果这样的话,range(1,i+1),的范围其实是1-10咯,那这样的话后面打印i*j的话应该是1-9乘1-10啊,为啥是99乘法表。。。(我不是杠精,我真的就是想知道到底是怎么事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-12 20:29:50 | 显示全部楼层
青出于蓝 发表于 2022-7-12 20:22
函数语法
range(start, stop[, step])
参数说明:

请问这段代码的话是用的range(stop)吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-12 20:30:59 | 显示全部楼层
1822989620 发表于 2022-7-12 20:26
那如果这样的话,range(1,i+1),的范围其实是1-10咯,那这样的话后面打印i*j的话应该是1-9乘1-10啊, ...

没有啊
i不是最大可以取到9吗
也就是说range(1,i+1)按i最大的情况来算的话就是range(1,9+1),也就是range(1,10),上面提过range(1,10)最大只能取到9,即j最大能取到9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-12 20:43:49 | 显示全部楼层
临时号 发表于 2022-7-12 20:30
没有啊
i不是最大可以取到9吗
也就是说range(1,i+1)按i最大的情况来算的话就是range(1,9+1),也就是rang ...

啊,我应该懂了,也就是说就算j的实际范围是1-10,但是他也只能取到9.所以说,for j in range(1, i+1)=for j in range(1, 10),是这样吗大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-12 20:49:50 | 显示全部楼层
函数语法
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)

这里只有start stop两个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-12 20:54:49 | 显示全部楼层    本楼为最佳答案   
1822989620 发表于 2022-7-12 20:43
啊,我应该懂了,也就是说就算j的实际范围是1-10,但是他也只能取到9.所以说,for j in range(1, i+1)=fo ...



刚刚的一切都是建立在i取最大值9的基础上,如果i取3,则for j in range(1,4),j最高可以取到3
所以不能说for j in range(1, i+1)=for j in range(1, 10)
你要这样说就必须有i=9,也就是i去最大值这个前提
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-13 00:51:57 | 显示全部楼层
1822989620 发表于 2022-7-12 20:26
那如果这样的话,range(1,i+1),的范围其实是1-10咯,那这样的话后面打印i*j的话应该是1-9乘1-10啊, ...

i in rang(1,10) i的最大值是9,rang(1,i+1)带入一下不就是rang(1,9+1)吗?范围也是1-9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 21:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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