鱼C论坛

 找回密码
 立即注册
查看: 692|回复: 13

[已解决]新手求助哈,end的用法没明白。

[复制链接]
发表于 2024-2-24 12:38:59 | 显示全部楼层 |阅读模式

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

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

x
这个是我的程序:
for i in range(1,10):
        for j in range(1,i+1):
                print (i,"x",j,"=",i*j)
        print (end='\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

这个 是答案:
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


为什么end书写的地方不同,产生的效果不同,这里面的逻辑没太明白。
最佳答案
2024-2-24 20:37:47
本帖最后由 jackz007 于 2024-2-25 13:44 编辑

        end 是函数 print() 的一个命名可选参数,这个参数的缺省值是 '\n',其作用是在输出打印内容的最后,多附加输出一个换行符 '\n',这就是为什么调用 print() 会输出一个空行的原因。
        当然,命名可选参数 end 的缺省值也是可以被改变的,这就需要在调用 print() 的时候,用 end = 进行修改,当修改为 end = '' 的时候,输出完打印内容后,就不再会回车换行,这样,就可以让多次调用 print() 的输出内容按前后顺序呈现在屏幕的同一行上。
        为了加深理解,请楼主考察、运行下面的代码:
print("不用 end=''")
print(1)
print(2)
print(3)
print(4)
print("使用 end=''")
print(1 , end='')
print(2 , end='')
print(3 , end='')
print(4)

    运行实况:
D:\[exercise]\Python>python x.py
不用 end=''
1
2
3
4
使用 end=''
1234

D:\[exercise]\Python>

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2024-2-24 12:39:14 | 显示全部楼层
end是print()函数的一个参数,用于指定输出的结束符。
在默认情况下,end的值是'\n',也就是换行符。所以每次print()函数执行完毕后都会自动换行。
当你将end的值设置为空字符串''的时候,表示不换行,即所有的输出都会连续在一行上显示。
所以在你的第一个程序中,每次内层循环结束后,外层循环执行了print(end='\n'),所以产生了每一行之间的空行。
而在第二个程序中,没有使用print(end='\n'),所以所有的输出都连续在一行上显示。

希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

点评

我很赞同!: 5.0
我很赞同!: 5
感谢解答,慢慢去理解  发表于 2024-2-24 13:02
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-24 12:42:49 | 显示全部楼层
为什么end=‘’,引号里面为空呢,然后再下面才是加上\n?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 12:43:01 | 显示全部楼层
李时珍滴皮 发表于 2024-02-24 12:42
为什么end=‘’,引号里面为空呢,然后再下面才是加上 ...


嗯,这个是因为print()函数的默认行为是在输出结束后自动换行。当你在使用print()函数时,如果不指定end参数的值,默认情况下它的值就是'\n',也就是换行符。所以,在第二个程序中,当你将end的值设置为空字符串''时,就表示不换行,而不是换行符。然后,在代码的最后一行使用print('\n')来手动换行,使得每一行之间有一个空行。所以,通过这样的设置,就能够实现每打印完一行乘法表就换行,且每一行之间有一个空行的效果。希望能够解答你的疑惑!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

点评

我很赞同!: 5.0
我很赞同!: 5
感谢解答,多去使用使用  发表于 2024-2-24 13:02
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 12:44:07 | 显示全部楼层
end=空字符串:字符串输出后不换行
end=“\n”:默认(换行)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-24 12:45:49 | 显示全部楼层
然后是这里:
print (i,"x",j,"=",i*j,end='')
为什么不能直接写
print (i*j,end='')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2024-2-24 12:46:10 | 显示全部楼层
print 函数会先输出需要打印的内容,再输出 end 参数的值。默认情况下,end 的值是 '\n'。
>>> print(1); print(2)
1
2
>>> print(1, end = ''); print(2)
12
>>> 
第一段代码中:
    第一个 print 函数在每次打印完 ixj=k 后会打印 end,即空行,导致每两个式子之间都是空行。
    第二个 print 会打印一个空行。
第二段代码中:
    第一个 print 函数在每次打印完  ixj=k 后会打印 end。此时 end 的值为 '',导致每两个式子之间没有间隔。
    第二个 print 会打印一个空行。

点评

我很赞同!: 5.0
我很赞同!: 5
好的,谢谢解答  发表于 2024-2-24 13:03
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 12:46:39 | 显示全部楼层
李时珍滴皮 发表于 2024-2-24 12:45
然后是这里:
print (i,"x",j,"=",i*j,end='')
为什么不能直接写

这样的话只会输出 i*j 的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-24 13:04:00 | 显示全部楼层
tommyyu 发表于 2024-2-24 12:46
这样的话只会输出 i*j 的值。

意思就是,要把i,j先提取出来,在运算,是吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 13:45:38 | 显示全部楼层
李时珍滴皮 发表于 2024-2-24 13:04
意思就是,要把i,j先提取出来,在运算,是吗
print (i,"x",j,"=",i*j,end='')
中, print 函数是一个一个输出参数的。即先输出了i,再输出 "x",再输出 j,再输出"=",最后输出 i*j。
而 print(i*j) 只会输出 i*j。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-2-24 20:37:47 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-2-25 13:44 编辑

        end 是函数 print() 的一个命名可选参数,这个参数的缺省值是 '\n',其作用是在输出打印内容的最后,多附加输出一个换行符 '\n',这就是为什么调用 print() 会输出一个空行的原因。
        当然,命名可选参数 end 的缺省值也是可以被改变的,这就需要在调用 print() 的时候,用 end = 进行修改,当修改为 end = '' 的时候,输出完打印内容后,就不再会回车换行,这样,就可以让多次调用 print() 的输出内容按前后顺序呈现在屏幕的同一行上。
        为了加深理解,请楼主考察、运行下面的代码:
print("不用 end=''")
print(1)
print(2)
print(3)
print(4)
print("使用 end=''")
print(1 , end='')
print(2 , end='')
print(3 , end='')
print(4)

    运行实况:
D:\[exercise]\Python>python x.py
不用 end=''
1
2
3
4
使用 end=''
1234

D:\[exercise]\Python>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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