板砖丶 发表于 2020-3-16 05:57:29

求助!新版python教程里004讲课后题动动手1题

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



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 = 22 x 2 = 4

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

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

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

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

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

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

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:这个九九乘法表,两个式子间没有间距,这个有没有办法改进呢?

wp231957 发表于 2020-3-16 07:31:43

逗号连接字符串,实在不知道该如何解释

Judie 发表于 2020-3-16 07:32:01

本帖最后由 Judie 于 2020-3-15 18:34 编辑

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

函数语法:
range(start, stop[, step])



参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是没有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)给出序列。默认情况下,range 步距取为1。如果我们提供第三个数字,range那么它变成了步距。例如range(1,5,2)得到。
for循环然后遍历这个范围,for i in range(1,5)相当于 for i in ,这就像把序列中的每一个数(或对象)分配给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') 另起一行

#以此类推

wp231957 发表于 2020-3-16 07:33:58

end后面变成空格,一个空格不过瘾你就来2个或更多

你要打印的是矩阵,不需要换行吗,那个单独print就是了

sunrise085 发表于 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=' ')各个部分之间会有一个空格,会不太好看。帮你修改了一下。
for i in range(1, 10):
    for j in range(1, i+1):
      print('%d×%d=%d'%(i,j,i*j),end='\t')
    print("\n")

板砖丶 发表于 2020-3-16 15:52:45

Judie 发表于 2020-3-16 07:32
range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:


感谢回答!对于第一个提问解释的非常清楚明了!!!
谢谢啦lol

板砖丶 发表于 2020-3-16 16:02:07

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


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

——————————
以上,感谢!

sunrise085 发表于 2020-3-16 16:08:02

板砖丶 发表于 2020-3-16 16:02
——————————
以上,感谢!

不客气,最近我正在写一个帖子。估计今晚应该能写完,是有关print的帖子。到时候你可以看看。
学习不要跳跃,一步步扎扎实实的学,否则的确会有很多不懂的地方。

青柿子 发表于 2020-5-11 15:42:29

Judie 发表于 2020-3-16 07:32
range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:


多谢解惑,非常清楚明白,萌新再次感谢

tangcheng117 发表于 2020-5-11 16:42:42


学习了

五花肉肉肉 发表于 2020-6-8 04:10:09

Judie 发表于 2020-3-16 07:32
range() 函数可创建一个整数列表,一般用在 for 循环中。

函数语法:


多谢大佬!答案里第二个print我也没懂,看了大佬的解释才明白不是print函数的问题,根源在for循环上~
页: [1]
查看完整版本: 求助!新版python教程里004讲课后题动动手1题