左疯子 发表于 2022-8-5 17:38:06

为什么加了两个退格程序输出差距这么大

for i in range(1,10):
    for j in range(1,i+1):
      print(i,'\b*',j,'\b=',i*j,end='\t')
    print()


for i in range(1,10):
    for j in range(1,i+1):
      print(i,'*',j,'=',i*j,end='\t')
    print()

hrpzcf 发表于 2022-8-5 17:40:07

\b就是删除前面一个字符,要是没有变化还得了

左疯子 发表于 2022-8-6 10:43:52

hrpzcf 发表于 2022-8-5 17:40
\b就是删除前面一个字符,要是没有变化还得了

我疑惑的不是变了,是我觉得她变得没有规律,就比如4*2=8与4*3=12之间的距离和4*3=12与4*4=16之间的距离为什么不同,这是我疑惑的?能解答一下嘛?比较困惑

liuzhengyuan 发表于 2022-8-6 11:10:10

左疯子 发表于 2022-8-6 10:43
我疑惑的不是变了,是我觉得她变得没有规律,就比如4*2=8与4*3=12之间的距离和4*3=12与4*4=16之间的距离 ...

1,因为你退格会影响到 tab
2,其次,不建议你用退格来取消 print 中逗号带来的空格,可以用 sep 参数
比如
print(a, b, sep="") # 表示输出 a 和 b 但是不被空格隔开

hrpzcf 发表于 2022-8-6 11:28:35

本帖最后由 hrpzcf 于 2022-8-6 11:32 编辑

左疯子 发表于 2022-8-6 10:43
我疑惑的不是变了,是我觉得她变得没有规律,就比如4*2=8与4*3=12之间的距离和4*3=12与4*4=16之间的距离 ...

因为你用到了\t,\t是横向制表符,是用来对齐字符的,默认是每8个空格宽度一茬
“4* 2= 8”是7个字符,所以8后面的\t表现为一个空格,刚好凑够8个字符宽度
“4* 3= 12”是8个字符,距离上一个\t已经满8个字符了,所以2后面的\t只好新起另一茬8个空格
所以结果就是图一这样子

左疯子 发表于 2022-8-6 17:27:28

hrpzcf 发表于 2022-8-6 11:28
因为你用到了\t,\t是横向制表符,是用来对齐字符的,默认是每8个空格宽度一茬
“4* 2= 8”是7个字符 ...

明白了,谢谢!

左疯子 发表于 2022-8-6 17:27:58

liuzhengyuan 发表于 2022-8-6 11:10
1,因为你退格会影响到 tab
2,其次,不建议你用退格来取消 print 中逗号带来的空格,可以用 sep 参数
...

懂啦,谢谢

左疯子 发表于 2022-8-6 17:31:34

hrpzcf 发表于 2022-8-6 11:28
因为你用到了\t,\t是横向制表符,是用来对齐字符的,默认是每8个空格宽度一茬
“4* 2= 8”是7个字符 ...

还有个疑惑,\t是凑够八个字符,那为啥12后面是四个字符呢?

hrpzcf 发表于 2022-8-6 17:54:21

左疯子 发表于 2022-8-6 17:31
还有个疑惑,\t是凑够八个字符,那为啥12后面是四个字符呢?

可能是跟终端有关吧,我用Windows Terminal是8个空格。

liuzhengyuan 发表于 2022-8-6 22:59:21

左疯子 发表于 2022-8-6 17:27
懂啦,谢谢

如果问题解决了,请选一个你最满意的答案作为 “最佳答案”
页: [1]
查看完整版本: 为什么加了两个退格程序输出差距这么大