嵌套 FOR 循环 - Swift 2

NESTED FOR LOOP - Swift 2

除了这本书,我没有编码经验

编程Swift! Swift 2 Kindle 版 尼克·史密斯(作者)

我目前在章节

5.3 嵌套 FOR 循环

// 嵌套 FOR 循环 #2

这段代码-

for var a = 0; a < 11; a++ {
    print("")

    for var b = 0; b < a; b++ {
        print("*", terminator: " ")

    }

}

GENERATES THIS PATTERN...

现在[几个/4小时后'odd']我根本无法锻炼HOW TO CHANGE THE ABOVE 'simple' [if you know how] CODE TO GENERATE THIS PATTERN??

我(认为我)可以看到外循环和内循环我只是无法解决其余的问题!??我已经尝试了所有我能想到的变化!?? (我知道只是做 'permutations' 并不意味着我真正了解我正在尝试做的事情!...)

尝试使用 --operators 并更改 [大多数/所有] 值[但 'permutations' 是一种有限的方法]

我觉得自己完全是个傻瓜,但我想如果这是我第一次看到这些东西也许还不错,这些东西需要学习!??

帮助(大声笑的答案)将不胜感激

for var a = 10; a > 0; a-- { 

    for var b = 0; b < a; b++ {
        print("*", terminator: " ")

    }
    print()
}

打印

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

现在 Swift 语法的更新,具有相同的功能

for a in stride(from: 10, through: 0, by: -1) {
    for _ in stride(from: 0, to: a, by: 1) {
        print("*", terminator: " ")
    }
    print()
}

如何系统地执行此操作:如果您想获得例如 user3441734 的输出:有 11 行。我们从 0 到 10 对行进行编号。因此我们有一个循环将行设置为 0 到 10 的值。

for var line = 0; line < 11; ++line

接下来,我们要在每一行打印什么?在第 0 行,我们要打印 11 * 个字符。在第 10 行中,我们要打印 1 个星号字符。星星数为11行。我如何获得表达式 11 - 行?星星的数量随着线的上升而下降,所以它一定是某种东西——线。当 line = 0 时,必须有 11 颗星,所以 something - 0 = 11,something = 11。所以循环中的第一行:

let starcount = 11 - line

然后我们要打印 (star count) 次一个星和一个 space 字符,然后开始一个新行。

for var star = 0; star < starcount; ++star {
    print ("*", terminator: " ")
}
print ("")

总计:

for var line = 0; line < 11; ++line {
    let starcount = 11 - line
    for var star = 0; start < star count; ++star {
        print ("*", terminator: " ")
    }
    print ("")
}

我们稍微简化了循环:

for var line in 0 ..< 11 {
    let starcount = 11 - line
    for var star in 0 ..< starcount {
        print ("*", terminator: " ")
    }
    print ("")
}

如果你想要不同的模式,你所要做的就是在行数不同的情况下更改数字11,并更改starcount的计算。实际上,最好也为 linecount 设置一个变量,这样更改不同的模式就更容易了:

let linecount = 11
for var line in 0 ..< line count {
    let starcount = linecount - line
    for var star in 0 ..< starcount {
        print ("*", terminator: " ")
    }
    print ("")
}