在Python中使用嵌套的for循环打印模式

vd2z7a6w  于 2023-10-14  发布在  Python
关注(0)|答案(2)|浏览(111)

我是Python的初学者。
使用嵌套循环打印的图案:

  1. 1@
  2. 1#3#
  3. 1@3@5@
  4. 1#3#5#7#

(For循环优先)
谢谢.
这是我尝试的代码:

  1. n = int(input("Enter no:"))
  2. for i in range(1, n + 1):
  3. for j in range(1, 2 * i):
  4. if j % 2 == 0:
  5. print("#", end="")
  6. else:
  7. print(str(j), end="@")
  8. print()

输出量:

  1. Enter no:7
  2. 1@
  3. 1@#3@
  4. 1@#3@#5@
  5. 1@#3@#5@#7@
  6. 1@#3@#5@#7@#9@
  7. 1@#3@#5@#7@#9@#11@
  8. 1@#3@#5@#7@#9@#11@#13@

“@”似乎每行都有,而“#”不是每第二行都有

6gpjuf90

6gpjuf901#

正如@Scott Hunter在评论中指出的那样,偶数行和奇数行之间的差异应该基于i的值,而不是j
下面是你的代码,上面提到的修改和更新的打印:

  1. n = int(input("Enter no:"))
  2. for i in range(1, n + 1):
  3. for j in range(1, 2 * i, 2):
  4. if i % 2 == 0:
  5. print(f"{j}#", end="")
  6. else:
  7. print(f"{j}@",end="")
  8. print()

这是我在运行代码时得到的输出,输入值为7

  1. 1@
  2. 1#3#
  3. 1@3@5@
  4. 1#3#5#7#
  5. 1@3@5@7@9@
  6. 1#3#5#7#9#11#
  7. 1@3@5@7@9@11@13@
展开查看全部
oknwwptz

oknwwptz2#

你没有理由在循环中保留一个if条件:你可以简单地使用一个索引的字符数组:

  1. seps = '@#'
  2. n = int(input("Enter no:"))
  3. for i in range(n): # loop on the lines
  4. sep = seps[i%2]
  5. for j in range(i+1): # loop over odd numbers
  6. print(1+2*j, end=sep)
  7. print() # do not forget the end of line...

或者更短:

  1. seps = '@#'
  2. n = int(input("Enter no:"))
  3. for i in range(n): # loop on the lines
  4. print(*(1+2*j for j in range(i+1)), '', sep=seps[i%2])

相关问题