鱼C论坛

 找回密码
 立即注册
查看: 1880|回复: 6

[已解决]杨辉三角形输出end = '\t'是什么意思

[复制链接]
发表于 2022-2-28 13:45:34 | 显示全部楼层 |阅读模式

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

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

x
0.end = '\t'是什么意思?
1.为什么不能用end='对应的空格'替换end = '\t'?请各位前辈帮忙

# 初始化杨辉三角形
# 创建一个10*10的二维列表,并将所有的元素初始化为0
triangle = []
for i in range(10):
    triangle.append([])
    for j in range(10):
        triangle[i].append(0)
   
# 计算杨辉三角形
# 根据观察,我们知道杨辉三角形左右两边的元素均为1
for i in range(10):
    triangle[i][0] = 1
    triangle[i][i] = 1
   
# 第i行j列的值 = 第(i-1)行(j-1)列的值 + 第(i-1)行(j)列的值
for i in range(2, 10):
    for j in range(1, i):
        triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
   
# 输出杨辉三角形
for i in range(10):
    # 因为是三角形,所以i越小,前边需要填充的TAB越多
    for k in range((10-i)//2):
        print('\t', end='')
    for j in range(i+1):
        # 要形成“隔行错开”的效果,所以我们在偶数行加4个空格
        if i % 2 == 1:
            print("    ", end='')
        # 为何要使用TAB而非空格,大家可以将下面的end='\t'改成对应的空格数即可知晓
        print(triangle[i][j], end='\t')
    print()
最佳答案
2022-3-4 14:55:45
本帖最后由 isdkz 于 2022-3-4 21:51 编辑
李二蛋 发表于 2022-2-28 20:58
感谢您的回答,我还有些疑问:
0.什么叫终端?
1.什么叫制表符?


实在不好意思,我刚刚才看到你的回复。

第一个问题:终端(terminal)是命令行窗口(cmd),终端通常是Linux系统的说法。

就是那个运行命令的窗口


第二个问题:水平制表符就是一个tab键输出的符号,用来对文本做间隔的,

有间隔的格式是表,所以称它为制表符,\t 中的 t 就是 tab 的意思


第三个问题:制表符虽然是默认4个空格(在python中可以修改\t的宽度)的宽度,

但它不等同于 4 个空格,4 个空格是 4 个字符,而 \t 键是 1 个字符,

因为 \t 是一个字符,所以当终端的剩余宽度不够 4 个(空格的宽度)时,

它会 4 个(空格的宽度)都在第二行输出,

而 空格 是一个字符,当终端的剩余宽度不够 4 个(空格的宽度)时,

比如 这一行只剩下 3个(空格的宽度),它会在这一行输出3个空格,

剩下的那个会在第二行输出, \t 哪怕还能输出 3 个空格的宽度,它也不会拆开,

而是整体(4 个空格的宽度)在第二行输出


制表符还可以自动调整间隔,它总能保证两行之间的列是对齐的,

而空格不懂变通,它总要输出四个空格


你执行这个代码就明白了:
# 使用 \t 制表符
print("使用制表符")
print('fdfdf\tfdfdf')
print('f\tfdfdfdf')
print('fdfer\tfvdgd')
print('fdfdfdf\tfdfdf')

print('-' * 50)

# 使用 4 个空格替代制表符
print("使用4个空格替代制表符")
print('fdfdf    fdfdf')
print('f    fdfdfdf')
print('fdfer    fvdgd')
print('fdfdfdf    fdfdf')

执行结果:

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

使用道具 举报

发表于 2022-2-28 14:32:52 | 显示全部楼层
\t 是水平制表符,它会根据终端的宽度来自动调整(不是调整制表符的宽度,

而是不够一个制表符的宽度会换行,因为制表符是一个整体
),

而空格会按固定宽度输出(比如输出四个空格,

第一行的宽度只够放3个,那它还会在这一行放三个,

然后在第二行放一个,也就是空格会拆开放,而不像制表符一样当成一个整体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-28 20:58:49 | 显示全部楼层
isdkz 发表于 2022-2-28 14:32
\t 是水平制表符,它会根据终端的宽度来自动调整(不是调整制表符的宽度,

而是不够一个制表符的宽度会 ...

感谢您的回答,我还有些疑问:
0.什么叫终端?
1.什么叫制表符?
2.制表符是一个整体,会自动根据终端宽度调整,不够一个会换行,
就比如一个制表符宽度是四,第一行不够那么换到下一行,即便是一个整体,
那么表达效果和空格有什么不同呢?
抱歉,前辈,我实在理解能力不足,可否给出代码更清晰直观理解,辛苦您了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 14:55:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-3-4 21:51 编辑
李二蛋 发表于 2022-2-28 20:58
感谢您的回答,我还有些疑问:
0.什么叫终端?
1.什么叫制表符?


实在不好意思,我刚刚才看到你的回复。

第一个问题:终端(terminal)是命令行窗口(cmd),终端通常是Linux系统的说法。

就是那个运行命令的窗口


第二个问题:水平制表符就是一个tab键输出的符号,用来对文本做间隔的,

有间隔的格式是表,所以称它为制表符,\t 中的 t 就是 tab 的意思


第三个问题:制表符虽然是默认4个空格(在python中可以修改\t的宽度)的宽度,

但它不等同于 4 个空格,4 个空格是 4 个字符,而 \t 键是 1 个字符,

因为 \t 是一个字符,所以当终端的剩余宽度不够 4 个(空格的宽度)时,

它会 4 个(空格的宽度)都在第二行输出,

而 空格 是一个字符,当终端的剩余宽度不够 4 个(空格的宽度)时,

比如 这一行只剩下 3个(空格的宽度),它会在这一行输出3个空格,

剩下的那个会在第二行输出, \t 哪怕还能输出 3 个空格的宽度,它也不会拆开,

而是整体(4 个空格的宽度)在第二行输出


制表符还可以自动调整间隔,它总能保证两行之间的列是对齐的,

而空格不懂变通,它总要输出四个空格


你执行这个代码就明白了:
# 使用 \t 制表符
print("使用制表符")
print('fdfdf\tfdfdf')
print('f\tfdfdfdf')
print('fdfer\tfvdgd')
print('fdfdfdf\tfdfdf')

print('-' * 50)

# 使用 4 个空格替代制表符
print("使用4个空格替代制表符")
print('fdfdf    fdfdf')
print('f    fdfdfdf')
print('fdfer    fvdgd')
print('fdfdfdf    fdfdf')

执行结果:

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

使用道具 举报

 楼主| 发表于 2022-3-4 23:12:00 | 显示全部楼层
isdkz 发表于 2022-3-4 14:55
实在不好意思,我刚刚才看到你的回复。

第一个问题:终端(terminal)是命令行窗口(cmd),终端通 ...

太太太太太感谢您了,两行之间的列保证对齐可太神奇了,下一行的\t是自动识别上一行的\t才能和上一行对齐么?如下代码,默认一个tab是8么

>>> print("q        qw")
q        qw
>>> print("qq        qw")
qq        qw
>>> print("qqqqq        qw")
qqqqq        qw
>>> print("qqqqqqqq        qw")
qqqqqqqq        qw
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-4 23:20:41 | 显示全部楼层
李二蛋 发表于 2022-3-4 23:12
太太太太太感谢您了,两行之间的列保证对齐可太神奇了,下一行的\t是自动识别上一行的\t才能和上一行对齐 ...

对的,\t 水平制表符会跟上一行联动的,默认情况下,一个 \t 是占了 4 个宽度的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2022-3-5 00:39:36 | 显示全部楼层
isdkz 发表于 2022-3-4 23:20
对的,\t 水平制表符会跟上一行联动的,默认情况下,一个 \t 是占了 4 个宽度的

感谢您,希望继续交流
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 07:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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