我正在努力解决这个问题
使用标准的for-in循环将所有小于或等于100的奇数加到oddNumbers数组中
我尝试了以下方法:
var oddNumbers = [Int]()
var numbt = 0
for newNumt in 0..<100 {
var newNumt = numbt + 1; numbt += 2; oddNumbers.append(newNumt)
}
print(oddNumbers)
Run Code Online (Sandbox Code Playgroud)
这导致:
1,3,5,7,9,... 199
我的问题是:虽然我指定0到<100之间的范围,为什么打印数字大于100?
你犯了一个错误:
for newNumt in 0..<100 {
var newNumt = numbt + 1; numbt += 2; oddNumbers.append(newNumt)
}
Run Code Online (Sandbox Code Playgroud)
变量newNumt定义的内部循环不影响变量newNumt的声明for语句.因此for循环打印出前100个奇数,而不是0到100之间的奇数.
如果你需要使用for循环:
var odds = [Int]()
for number in 0...100 where number % 2 == 1 {
odds.append(number)
}
Run Code Online (Sandbox Code Playgroud)
或者:
let odds = (0...100).filter { $0 % 2 == 1 }
Run Code Online (Sandbox Code Playgroud)
将使用0到100之间的项过滤数组中的奇数.为了更好的实现,请使用stride运算符:
let odds = Array(stride(from: 1, to: 100, by: 2))
Run Code Online (Sandbox Code Playgroud)