Python嵌套for循环实现指定图案打印问题求助
用嵌套for循环实现指定交替符号图案
目标图案
1@
1#3#
1@3@5@
1#3#5#7#
原代码问题分析
你的代码存在两个核心问题:
- 符号选择依赖于内层循环变量
j的奇偶性,而非行号i的奇偶,导致无法实现隔行切换符号的需求 - 内层循环逻辑错误,遍历了
1到2i-1的所有数,把奇数j作为数字并直接追加@,偶数j作为#,最终每行末尾都会多出一个@,且符号规则完全不符合预期
修正后的代码
n = int(input("Enter no:")) for i in range(1, n + 1): # 根据行号确定当前行使用的符号 current_symbol = '@' if i % 2 == 1 else '#' # 内层循环生成当前行的所有奇数数字(共i个) for num in range(1, 2 * i, 2): # 打印数字+当前符号,不换行 print(f"{num}{current_symbol}", end="") # 每行结束后换行 print()
代码说明
- 外层循环
for i in range(1, n+1):控制打印的总行数,i代表当前行号 - 符号判断:通过
i % 2判断行号奇偶,奇数行使用@,偶数行使用# - 内层循环
for num in range(1, 2*i, 2):生成当前行需要的所有奇数数字,第i行共有i个奇数(从1开始,步长为2,到2i-1结束) - 打印逻辑:每个数字后拼接当前行的符号,用
end=""保持同一行输出,所有数字打印完成后换行
测试输出(输入n=4)
1@ 1#3# 1@3@5@ 1#3#5#7#
内容的提问来源于stack exchange,提问作者Anonymous 7
相关产品推荐
相关产品推荐

