鱼C论坛

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

[已解决]python第四讲里九九乘法表 i 为什么没有到10?

[复制链接]
发表于 2020-4-27 02:13:33 | 显示全部楼层 |阅读模式

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

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

x
想问 i 的range不是1到10吗? 为什么最后一行不是10*j?
而且j=i+1,那么最后一次的 j 也应等于9*10呀,为什么也没有显示呢?


代码是这样写的

>>> for i in range(1, 10):
...     for j in range(1, i+1):
...         print(i, "x", j, "=", i * j, end=' ')
...     print("\n")

显示是
1 x 1 = 1

2 x 1 = 2 2 x 2 = 4

3 x 1 = 3 3 x 2 = 6 3 x 3 = 9

4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16

5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25

6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36

7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49

8 x 1 = 8 8 x 2 = 16 8 x 3 = 24 8 x 4 = 32 8 x 5 = 40 8 x 6 = 48 8 x 7 = 56 8 x 8 = 64

9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 9 x 4 = 36 9 x 5 = 45 9 x 6 = 54 9 x 7 = 63 9 x 8 = 72 9 x 9 = 81
最佳答案
2020-4-27 05:52:05
本帖最后由 Judie 于 2020-4-26 16:58 编辑

range(0,10) 是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 没有10 没有10 没有 10

'''
【朱迪的手写学习笔记 之 零基础入门学习Python】004
  https://fishc.com.cn/thread-153604-1-1.html
  (出处: 鱼C论坛)
'''



1. 打印一个九九乘法表。

标答
>>> for i in range(1, 10):
...     for j in range(1, i+1):
...         print(i, "x", j, "=", i * j, end=' ')
...     print("\n")

注释

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

函数语法:
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值执行该语句块。
for i in range(1,10): # i = 1,2,3,4,5,6,7,8,9
    for j in range(1,i+1):
        print(i,"x",j,"=",i*j,end=" ")
    print('\n')

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

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

#以此类推



评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +2 收起 理由
重新定义 + 2 + 2 + 2 感谢楼主无私奉献!

查看全部评分

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

使用道具 举报

发表于 2020-4-27 02:57:31 | 显示全部楼层
range(1,10)包括1但不包括10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 05:52:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Judie 于 2020-4-26 16:58 编辑

range(0,10) 是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 没有10 没有10 没有 10

'''
【朱迪的手写学习笔记 之 零基础入门学习Python】004
  https://fishc.com.cn/thread-153604-1-1.html
  (出处: 鱼C论坛)
'''



1. 打印一个九九乘法表。

标答
>>> for i in range(1, 10):
...     for j in range(1, i+1):
...         print(i, "x", j, "=", i * j, end=' ')
...     print("\n")

注释

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

函数语法:
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值执行该语句块。
for i in range(1,10): # i = 1,2,3,4,5,6,7,8,9
    for j in range(1,i+1):
        print(i,"x",j,"=",i*j,end=" ")
    print('\n')

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

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

#以此类推



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

使用道具 举报

 楼主| 发表于 2020-4-27 06:43:00 | 显示全部楼层
Judie 发表于 2020-4-27 05:52
range(0,10) 是 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 没有10 没有10 没有 10

'''

幡然醒悟! 这下彻底明白了,原来是我没有搞懂range的用法,现在懂了,谢谢谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 23:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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