【问题标题】:NESTED FOR LOOP - Swift 2嵌套循环 - Swift 2
【发布时间】:2016-03-02 20:17:16
【问题描述】:

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

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 小时“奇怪”] 我根本无法锻炼 HOW TO CHANGE THE ABOVE 'simple' [if you know how] CODE TO GENERATE THIS PATTERN??

我(我想我)可以看到外循环和内循环,我只是无法解决其余的问题!??我已经尝试了所有我能想到的变化!?? (并且我知道,仅仅做“排列”并不意味着我对我正在尝试做的事情有真正的理解!...)

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

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

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

【问题讨论】:

  • for var b = 0; b &lt; 10 - a; b++ {?
  • eric 谢谢您的解决方案和建议,当您知道如何操作时,它非常简单
  • @BenGee333 我的意思是,我认为用这么低质量的例子来学习 Swift 并不是一件好事。也许我的评论有点直接,对不起。 :) 但我对 Apple 电子书的建议仍然有效。
  • 同意@EricD。在这里,如果您想继续阅读本书,请继续阅读苹果书。太好了:)
  • no eric 我明白你在说什么 :-) 我的评论是 4 或 5 小时的挫败感和缺乏真正理解的结果,1 分钟代表你的答案 LOL 我尝试了一切,除了你的解释是完美的,我非常欣赏它:-))) 当我将它输入到操场上的那一刻,美丽的图案就出现了。我会听取您的建议,明天将开始 Apple Swift 2 图书第 1 页,现在我将以胜利结束我的一天,谢谢 :-)))

标签: for-loop swift2 nested-loops


【解决方案1】:
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()
}

【讨论】:

  • for indexLine in stride(from: 10, to: 0, by: -1) { for _ in stride(from: 0, to: indexLine, by: 1) { print("*" , 终止符: " ") } print("\n") }
【解决方案2】:

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

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

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

let starcount = 11 - line

然后我们要打印(星数)乘以星和空格字符,然后开始新行。

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,并更改星数的计算。实际上,最好也有一个 linecount 变量,因此更改为不同的模式更加容易:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2021-01-21
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多