鱼C论坛

 找回密码
 立即注册
查看: 2996|回复: 5

[已解决]24讲python杨辉三角

[复制链接]
发表于 2022-10-13 17:02:49 | 显示全部楼层 |阅读模式

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

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

x
所以为什么一会空格一会\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[i][j], end='\t')
    print()
最佳答案
2022-10-13 17:53:46
本帖最后由 jackz007 于 2022-10-13 18:02 编辑
星夕ING 发表于 2022-10-13 17:32
哦哦,大感谢!那么问问在这个问题里,小甲鱼为什么要tab和空格一起用呢,为什么单用tab和单用空格都会出 ...


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

  7. def show(d):
  8.     for i in range(len(d)):
  9.         print(' ' * (len(d) - 1 - i) * 2 , end = '')
  10.         print('%3d' % d[i][0] , end = '')
  11.         for j in range(1 , len(d[i])):
  12.             print(' %3d' % d[i][j] , end = '')
  13.         print()
  14.         
  15. show(yang(int(input('输入 n : '))))
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 输入 n : 10
  3.                     1
  4.                   1   1
  5.                 1   2   1
  6.               1   3   3   1
  7.             1   4   6   4   1
  8.           1   5  10  10   5   1
  9.         1   6  15  20  15   6   1
  10.       1   7  21  35  35  21   7   1
  11.     1   8  28  56  70  56  28   8   1
  12.   1   9  36  84 126 126  84  36   9   1

  13. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-13 17:05:00 | 显示全部楼层
我试过了的确,把空格换成\t或者把\t换成空格,都会导致三角形乱掉,但是,为啥呢,再说tab在idle里不是4个空格嘛,不应该是一样的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-13 17:24:26 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-13 17:26 编辑

          出了 IDLE 是 CMD 的地盘,每个 tab 控制 8 个字符的域宽。你应该在显示数值的时候,统一使用一个域宽,比如说 3,然后,外加一个空格来处理试试看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

哦哦,大感谢!那么问问在这个问题里,小甲鱼为什么要tab和空格一起用呢,为什么单用tab和单用空格都会出问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-13 17:53:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-13 18:02 编辑
星夕ING 发表于 2022-10-13 17:32
哦哦,大感谢!那么问问在这个问题里,小甲鱼为什么要tab和空格一起用呢,为什么单用tab和单用空格都会出 ...


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

  7. def show(d):
  8.     for i in range(len(d)):
  9.         print(' ' * (len(d) - 1 - i) * 2 , end = '')
  10.         print('%3d' % d[i][0] , end = '')
  11.         for j in range(1 , len(d[i])):
  12.             print(' %3d' % d[i][j] , end = '')
  13.         print()
  14.         
  15. show(yang(int(input('输入 n : '))))
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>python x.py
  2. 输入 n : 10
  3.                     1
  4.                   1   1
  5.                 1   2   1
  6.               1   3   3   1
  7.             1   4   6   4   1
  8.           1   5  10  10   5   1
  9.         1   6  15  20  15   6   1
  10.       1   7  21  35  35  21   7   1
  11.     1   8  28  56  70  56  28   8   1
  12.   1   9  36  84 126 126  84  36   9   1

  13. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-13 18:11:47 | 显示全部楼层
jackz007 发表于 2022-10-13 17:53
看看这个如何:

        运行实况:

好!谢谢非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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