首页 > 解决方案 > 尝试使用 while 循环在 Swift 中制作星号三角形

问题描述

我正在尝试在 Swift 中输出棕褐色星号三角形。我必须使用 while 循环。

我试过自己做一个while循环——不走运,我想我需要用for循环嵌套一个while循环,但我什至不确定我能做到这一点。或者我可能会让这种方式变得比它需要的更难:)。编程的超级新手......我根本不知道如何在 while 循环中添加“*”。下面是我尝试过的最新代码,但它是错误的(显然)任何帮助将不胜感激

        let rows = 5
        for i in 1...rows{
            for j in 1...i{
                print("\(j) ", terminator: "")
            }
            var num_stars = 1


            while num_stars <= 5{
                print(num_stars)
                num_stars += 1

            }
              print("")

    }

标签: swiftwhile-loop

解决方案


简单地 :

let rows = 5
var i = 1
while i <= rows {
    print(String(repeating: "*", count: i))
    i += 1
}

输出:

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

这对我来说看起来更漂亮:

let rows = 5
var i = 0
while i < rows {
    let spaces = String(repeating: " ", count: rows - i - 1)
    let stars = String(repeating: "*", count: 2 * i + 1)
    print(spaces + stars)
    i += 1
}
    *
   ***
  *****
 *******
*********

或者 :

while i < rows {
    let spaces = String(repeating: " ", count: rows - i - 1)
    print(spaces, terminator: "")
    if i > 0 {
        print("*", terminator: "")
        if i < rows - 1 {
            let insideTriangleSpaces = String(repeating: " ", count: 2 * (i - 1) + 1)
            print(insideTriangleSpaces, terminator: "")
        } else {
            let insideTriangleStars = String(repeating: "*", count: 2 * (i - 1) + 1)
            print(insideTriangleStars, terminator: "")
        }
    }
    print("*")
    i += 1
}
    *
   * *
  *   *
 *     *
*********

推荐阅读