星夕ING 发表于 2022-10-13 17:02:49

24讲python杨辉三角

所以为什么一会空格一会\t啊,我不理解

小甲鱼的代码如下:
# 输出杨辉三角形
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, end='\t')
    print()

星夕ING 发表于 2022-10-13 17:05:00

我试过了的确,把空格换成\t或者把\t换成空格,都会导致三角形乱掉,但是,为啥呢,再说tab在idle里不是4个空格嘛,不应该是一样的吗

jackz007 发表于 2022-10-13 17:24:26

本帖最后由 jackz007 于 2022-10-13 17:26 编辑

          出了 IDLE 是 CMD 的地盘,每个 tab 控制 8 个字符的域宽。你应该在显示数值的时候,统一使用一个域宽,比如说 3,然后,外加一个空格来处理试试看。

星夕ING 发表于 2022-10-13 17:32:05

jackz007 发表于 2022-10-13 17:24
出了 IDLE 是 CMD 的地盘,每个 tab 控制 8 个字符的域宽。你应该在显示数值的时候,统一使用一 ...

哦哦,大感谢!那么问问在这个问题里,小甲鱼为什么要tab和空格一起用呢,为什么单用tab和单用空格都会出问题

jackz007 发表于 2022-10-13 17:53:46

本帖最后由 jackz007 于 2022-10-13 18:02 编辑

星夕ING 发表于 2022-10-13 17:32
哦哦,大感谢!那么问问在这个问题里,小甲鱼为什么要tab和空格一起用呢,为什么单用tab和单用空格都会出 ...

      看看这个如何:
def yang(n):
    d = [ for i in range(n)]
    for i in range(2 , n):
      for j in range(1 , i):
            d = d + d
    return d

def show(d):
    for i in range(len(d)):
      print(' ' * (len(d) - 1 - i) * 2 , end = '')
      print('%3d' % d , end = '')
      for j in range(1 , len(d)):
            print(' %3d' % d , end = '')
      print()
      
show(yang(int(input('输入 n : '))))
      运行实况:
D:\\Python>python x.py
输入 n : 10
                  1
                  1   1
                1   2   1
            1   3   3   1
            1   4   6   4   1
          1   51010   5   1
      1   6152015   6   1
      1   721353521   7   1
    1   82856705628   8   1
1   93684 126 1268436   9   1

D:\\Python>

星夕ING 发表于 2022-10-13 18:11:47

jackz007 发表于 2022-10-13 17:53
看看这个如何:

      运行实况:

好!谢谢非常感谢
页: [1]
查看完整版本: 24讲python杨辉三角