print中的空格和\t的区别
本帖最后由 镜花丿水月 于 2022-1-20 16:18 编辑做列表第六课的动动手作业的时候
通过print空格怎么也不能将中间的数字对齐
而print \t就能够对齐。。。。。
但是数了数 明明计算的方式一样的为什么会出现这种情况呢???
数字和数字之间的间距是完全一样的
两种tab和空格的2种方式数字都被算作额外单独的一格。。。
明明算的距离是一样的为什么看起来差别这么大 第一个图的代码呢 wp231957 发表于 2022-1-20 16:24
第一个图的代码呢
第一个图的代码就是把图二里print里的\t的部分 换成4个空格其余完全没变 因为制表符本身就是 8 个空格组成的,在 python 中可以得到验证:
print("\t1")
打印出来的结果就是:
1
这里的 1 前面跟了 8 个空格,而并不是 4 个,
由此可得知:制表符对应的长度在不同的地方是不同的!
懂了吗?不懂可以再问!懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:} 来学习
python爱好者. 发表于 2022-1-20 16:40
因为制表符本身就是 8 个空格组成的,在 python 中可以得到验证:
打印出来的结果就是:
h = int(input('请输入杨辉三角形的高:'))
while h <= 1:
print('请输入大于1的整数')
h = int(input('请输入杨辉三角形的高:'))
triangle = [ * ( i + 1 ) for i in range(h)]
i = 0
t = h
for k in triangle:
i += 1
print((t - i) * ' ',end = '')
if i >= 3:
for j in range(1,i-1):
k = triangle + triangle
for a in k:
print(a,end = 2 * ' ')
print()
我把\t换成8个空格还是 错位的呀 你自己试试
你把空格换成\t就会发现中间竟然对齐了。。。。 h = int(input('请输入杨辉三角形的高:'))
while h <= 1:
print('请输入大于1的整数')
h = int(input('请输入杨辉三角形的高:'))
triangle = [ * ( i + 1 ) for i in range(h)]
i = 0
t = h
for k in triangle:
i += 1
print((t - i) * ' ',end = '')
if i >= 3:
for j in range(1,i-1):
k = triangle + triangle
for a in k:
print(a,end = 2 * ' ')
print()
将\t换成8个空格也没法做到中线对齐
但是把空格换成\t其余什么都不动竟然对齐了神奇 将\t换成8个空格仍然不会对齐。。。。 这......没理由啊!
@Stubborn @傻眼貓咪
救救我! 本帖最后由 hrpzcf 于 2022-1-20 18:31 编辑
\t是横向制表符。
制表符是制表符,空格是空格,制表符占用的宽度有时候等于8个空格宽度但不能认为制表符等于8个空格,一个制表符永远是一个制表符。
空格是固定的一个字符宽度,
制表符却不是固定宽度,一个制表符可以是4个字符宽度,也可以是8个字符宽度,甚至可以出现非整数倍的字符宽度,总之它的宽度取决于最近的一个对齐位所需的宽度。
hrpzcf 发表于 2022-1-20 18:24
\t是横向制表符。
制表符是制表符,空格是空格,制表符占用的宽度有时候等于8个空格宽度但不能认为制表符 ...
但是 8 个空格 ~ 0个空格 我都试了,
不行啊,大佬?{:10_277:} 声明刚才的帖子:
那个 “不行” 不是说您不行,是说您的方法不行,
没有其他意思!{:10_297:} python爱好者. 发表于 2022-1-20 18:25
但是 8 个空格 ~ 0个空格 我都试了,
不行啊,大佬?
甚至可以出现非整数倍的字符宽度 hrpzcf 发表于 2022-1-20 18:30
所以请问这里对应的是几个空格{:10_254:} python爱好者. 发表于 2022-1-20 18:35
所以请问这里对应的是几个空格
这我就不知道了,我只是说说我的见解。
如果我说是9.5个字符宽度,你能打出来9.5各字符吗? hrpzcf 发表于 2022-1-20 18:37
这我就不知道了,我只是说说我的见解。
如果我说是9.5个字符宽度,你能打出来9.5各字符吗?
eee......
感谢大佬的回答,回去慢慢理解{:10_256:} 本帖最后由 hrpzcf 于 2022-1-20 19:07 编辑
python爱好者. 发表于 2022-1-20 18:39
eee......
感谢大佬的回答,回去慢慢理解
我理解的也不一定对,也有可能楼主用的是非等宽字体造成的。但是仔细想想觉得非等宽字体下用制表符能对齐更能说明"制表符非整数个字符宽度"。 本帖最后由 傻眼貓咪 于 2022-1-20 21:24 编辑
想知道自己的 '\t' 输出到底是多少个空格,试一下就知道了:print("A\tA")
print("ABBBBBBBA")A A
ABBBBBBBA我这里是 7 个空格,这就是出现问题的地方,一般认为是 8 个。正解请看楼下大佬解说 本帖最后由 Stubborn 于 2022-1-20 21:10 编辑
python爱好者. 发表于 2022-1-20 18:12
这......没理由啊!
@Stubborn @傻眼貓咪
救救我!
atbe = [ , ,,]
for idx, e in enumerate(atbe):
print((len(atbe) - idx) * '' + " ".join(" ".join(['%s'%x for x in e]))) 傻眼貓咪 发表于 2022-1-20 21:04
想知道自己的 '\t' 输出到底是多少个空格,试一下就知道了:我的是 7 个空格,这就是出现问题的地方,一般 ...
\t是属于补齐8个字符, (a + \t) %8 = 0。 比如输出两个字符再输出制表符,此时制表符输出6个空格。如果输出8个字符,此时制表符输出8个空格。
页:
[1]
2