生成反向数字图案遇问题:无法得到预期输出结果
数字图案生成问题
我尝试生成指定数字图案,但输出不符合预期:
预期图案
2 43 765 111098 111098 765 43 2
(注:你提供的预期第四行1110198应为笔误,正确应为111098)
现有代码
n=int(input("enter the number")) for i in range(1, n): for j in range(i,0,-1): print(j+1, end=" ") print() for i in range(n-1,0,-1): for j in range(i,0,-1): print(j+1, end=" ") print()
当前实际输出
2 3 2 4 3 2 5 4 3 2 5 4 3 2 4 3 2 3 2 2
修正方案
你的代码输出的是固定规则的递减数字,但预期图案的数字是累加递增后倒序拼接,且每行起始数字是前一行末尾数字加1,同时输出不能有空格。
修改后的代码:
n = int(input("enter the number")) current_num = 2 row_records = [] # 生成上半部分图案 for row in range(1, n): # 从current_num开始,倒序取row个数字 current_row = [str(current_num - k) for k in range(row)] row_str = ''.join(current_row) print(row_str) row_records.append(row_str) # 更新下一行的起始数字:当前起始 + row + 1 current_num += row + 1 # 生成下半部分对称图案 for line in reversed(row_records): print(line)
逻辑说明
- 数字规律:每行起始数字是前一行起始数 + 当前行号 + 1,比如:
- 第1行起始2,第2行起始=2+1+1=4
- 第2行起始4,第3行起始=4+2+1=7
- 第3行起始7,第4行起始=7+3+1=11
- 行内容生成:每行从起始数字开始,倒序取对应行数的数字,拼接成无空格的字符串。
- 对称输出:把上半部分的行记录倒序输出,得到下半部分的对称图案。
测试输入n=5时,输出完全符合预期。
内容的提问来源于stack exchange,提问作者I_am_THE_9th
相关产品推荐
相关产品推荐

