使用while循环的星星金字塔python嵌套while循环

新手上路,请多包涵

在过去的两天里,我在尝试使用用户输入的 while 循环制作星星金字塔时遇到了麻烦

最终结果的示例如下所示:

      *
    ***
   *****
  *******
 *********

但我什至不清楚这应该如何工作。正如我在过去两个晚上试图解决这个问题一样。

这是我到目前为止所拥有的:

 userInput = int(input("Please enter the amount of rows: "))
count = 1
spacing = 0
actualStars = "*"
numberStars = 0
rows = 0
while(userInput <= rows):
    rows += count
    print()
    while(spacing <= userInput):
        spacing += count
        print(" ")
        while(numberStars <= 0):
            print(actualStars)

原文由 Austin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

由于这是家庭作业,我不会给你一个代码答案,而是给你一个大纲,说明它应该如何工作。鉴于三个循环的约束,这似乎是预期的:

  1. 第一个外部循环应该遍历行。第一遍生成第一行,第二遍生成第二行,依此类推。

  2. 第二个循环嵌套在第一个循环内。它为当前行生成前导空格。

  3. 第三个循环也嵌套在第一个循环中,但 不是 第二个。它在第二个循环之后执行,并且应该在您的代码中跟在它后面。它为当前行生成星星。

这些循环中的每一个都非常简单,您应该不会遇到任何问题。唯一棘手的部分是让 print 打印一个字符串而不用换行符(它结束当前行)。如果您使用的是 Python 3,则可以使用 print("abc", end="") 这将打印字符串 abc 但不会结束该行。在第三个循环之后,您 需要 结束该行,您可以使用 print() 来完成。

原文由 Tom Karzes 发布,翻译遵循 CC BY-SA 3.0 许可协议

userInput=int(input("Please enter the amount of rows:"))
row=""
count =1
spacing =0
star=0
u=0
while(count <=userInput):
    spacing =spacing +count
    while(spacing<userInput):
        row+=" "
        spacing +=1
    star=count +u
    while(star>0):
        row+="*"
        star-=1
    count +=1
    spacing=0
    u+=1
    print(row)
    row*=-1

原文由 Mohmmed Qassem Saleh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题