【问题标题】:How to create patterns in Python using nested loops?如何使用嵌套循环在 Python 中创建模式?
【发布时间】:2020-05-16 06:07:41
【问题描述】:

我正在尝试在 Python 中创建这种模式:

##
# #
#  #
#   #
#    #
#     #

我必须使用嵌套循环,这是我目前的程序:

steps=6
for r in range(steps):
    for c in range(r):
        print(' ', end='')
    print('#')

问题是第一列没有显示,所以这是我运行时显示的内容:

#
 #
  #
   #
    #
     #

这是修改后的程序:

steps=6
for r in range(steps):
    print('#')
    for c in range(r):
        print(' ', end='')
    print('#')

但结果是:

#
  #
#
   #
#
    #
#
     #
#
      #
#
       #

如何让它们在同一行?

【问题讨论】:

  • 您没有在每行的开头打印任何开头。

标签: python python-3.x nested-loops


【解决方案1】:

替换这个...:

steps=6
for r in range(steps):
    for c in range(r):
        print(' ', end='')
    print('#')

有了这个:

steps=6
for r in range(steps):
    print('#', end='')
    for c in range(r):
        print(' ', end='')
    print('#')

哪些输出:

##
# #
#  #
#   #
#    #
#     #

这只是程序逻辑中的一个简单错误。

不过,最好还是这样做:

steps=6
for r in range(steps):
    print('#' + (' ' * r) + '#')

为避免在使用嵌套的 for 循环时发生这种复杂情况,您可以在字符串上使用运算符。

【讨论】:

    【解决方案2】:

    试试这个更简单的方法:

    steps=6
    for r in range(steps):
        print '#' + ' ' * r + '#'
    

    【讨论】:

    • 您的程序运行良好,但我需要使用嵌套循环结构。谢谢!
    【解决方案3】:

    您忘记了第二个打印“#”。放在内部循环之前。

    【讨论】:

      【解决方案4】:

      试试这样的:

      rows=int(input("Number")) s=rows//2 for r in range(rows): print("#",end="") print() for r in range(rows): while s>=0: print("#"+" "*(s)+"#") s=s-1 print("#")

      【讨论】:

      • 得到相反的结果
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多