python - 用 n 行打印此模式的 Python 程序,其中 n 由用户输入。在此示例输出中,n = 6
问题描述
我试图锻炼一些代码,但我无法达到预期的输出。预期的输出如下所示:
这是我尝试过的:
n = int(input())
for row in range(1, n + 1):
print(' ' * (n - row), end = '')
for col in range(row, 0 , -1):
print(col, end = ' ')
print()
解决方案
这是您的代码的打印输出(当用户输入时6
):
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
如您所见,顶部没有足够的空间。第一行现在有5
空格,但它需要另一个空格才能一直向右5
推。1
第二行有4
空格,但需要另一个4
。实际上,您需要将每行开头的空格数加倍。因此,只需将所需空格的数量乘以 2:
n = int(input())
for row in range(1, n + 1):
print(' ' * 2 * (n - row), end = '')
for col in range(row, 0 , -1):
print(col, end = ' ')
print()
你看到* 2
我添加到你的代码中了吗?现在打印出来了
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
这就是你想要的。
还有其他方法可以得到你想要的。例如* 2
,您可以用两个空格替换单个空格,而不是添加到该代码行:
print(' ' * (n - row), end = '')
这也有效并且看起来更好。
推荐阅读
- mongodb - MongoExport SASL 身份验证步骤:身份验证失败
- algorithm - 将给定问题优化为线性时间,而不用担心空间
- javascript - React 中的“无法读取未定义的属性‘映射’”,这里有什么问题?
- java - 使用 Apache POI 更改 Excel 折线图中的数据范围
- javascript - 将日期格式转换为另一种日期格式
- ios - 将 DJI SDK 集成到 Osmo Mobile 2 的自定义视频应用程序中
- java - Java 命名类:何时使用支持?但也考虑到 Helper 和 Utils
- r - 与 nls() 的非线性拟合在初始参数估计时给了我奇异梯度矩阵。为什么?
- sql - SQL FROM 子句中的两个表语法错误
- swift - 全局“let”声明需要初始化表达式