Python打印指定数字图案求助:输入5无法得到目标输出
问题分析与解决方案
目标输入为5时的图案特征:
- 每行空格数:
行数 - 当前行号个单空格(如第1行4个,第5行0个) - 每行数字序列:从
行数 - 当前行号 + 1开始,连续输出2*当前行号 -1个递增数字(如第1行从5开始输出1个,第2行从4开始输出3个,直到第5行从1开始输出9个) - 数字无空格分隔,连续输出
现有代码的问题:
- 空格数量错误:每个空格输出两个空格字符,导致每行空格数翻倍
- 数字逻辑错误:实现了对称回文数字序列,而非连续递增序列
- 数字格式错误:每个数字后添加了空格,与目标连续输出不符
修正后的代码
rows = int(input("Enter number of rows: ")) for i in range(1, rows + 1): # 打印前置空格:rows - i 个单空格 print(" " * (rows - i), end="") # 计算起始数字 start_num = rows - i + 1 # 打印连续数字:共2*i -1个 for j in range(2 * i - 1): print(start_num + j, end="") # 换行 print()
代码说明
- 前置空格:直接用字符串乘法
" " * (rows - i)生成对应数量的空格,简洁高效 - 起始数字:
rows - i +1确保第1行从rows开始,每行起始数字递减1 - 数字序列:循环
2*i -1次,每次输出start_num + j,实现连续递增的数字输出 - 无多余空格:数字直接连续打印,符合目标格式要求
测试输入5时的输出:
5 456 34567 2345678 123456789
内容的提问来源于stack exchange,提问作者Suresh Bijande
相关产品推荐
相关产品推荐

