iOS-Day5 for loop 迴圈練習

Hao
彼得潘的 Swift iOS / Flutter App 開發教室
7 min readMay 29, 2024
目錄
ㄧ、認識for循環
二、for-in + Range 區間運算
三、for loop 雙重循環
四、省略用不到的值
五、範例練習題

ㄧ、認識for循環

for 變量名 in 範圍 {...}

i 默認是let,如果要修改就要更改為var,… 為區間運算符。

//i默認是let
for var i in 1...3 {
i = i + 5
print(i)
}

二、for-in + Range 區間運算

for _ in 0 ..< 100 {

}
//==============
let names = ["Anna", "Alex", "Brain", "Jack"]

for name in names[2...]{
print("render1:",name)
}//Brain Jack

for name in names[...2]{
print("render2:",name)
}//Anna Alex Brain

for name in names[..<2]{
print("render3:",name)
}//Anna Alex

三、for loop 雙重循環

//印出 三角形
var string = ""
for i in 1...5 {
for _ in 0..<i { //i會隨著迴圈而增加
string += "❤️"
}
string += "\n"
}
print(string)

四、省略用不到的值

如果用不到值,可以使用_符號來代替。

for _ in 0...3{
print("123456789")
}

五、範例練習題

題目: 1~100的偶數和

var sum = 0
for i in 1...100 {
if i % 2 == 0 {
sum += i
}
}
print("1~100的偶數和為:\(sum)")

題目: 將陣列裡找到符合的數。

var numbs = [2,23,5,66,9,50]
let ele = 5

for i in 0...( numbs.count - 1 ) {
let numb = numbs[i]
if numb == ele {
print("恭喜你找到值")
break//找到之後馬上跳出
}
}

題目: 陣列中找出可被3整除的數

var array1 = [3,34,45,68,12]
var getNum1 = [Int]()
//陣列中可被3整除
func printDivisible(number:[Int], division: Int){
for i in number {
if i % division == 0 {
getNum1.append(i)//符合條件就加入陣列
}
}
}

printDivisible(number:array1,division:3)

print("getNum1:",getNum1)

題目: 計算陣列加總後的平均數

let array1 = [3,4,2,5]
var sum = 0

for number in array1{
sum = sum + number
print("sum:",sum)
}

let average = Double(sum) / Double(array1.count)
print(average)

題目: 求出陣列中的最大值

let numbers = [3, 4, 12, 5, 8]
var maxNumber = numbers[0]

for i in 0..<numbers.count {
print("目前:",i,"下一個:",i+1)
for j in i+1..<numbers.count {
print("下ㄧ個(\(j)):",j,"j的值:",numbers[j])//會跑完範圍內的所有參數
if numbers[j] > maxNumber {
maxNumber = numbers[j] //參數替換
}
}
}

print("最大值: \(maxNumber)")

題目: 判斷陣列中的數字是否由小排到大

let numbers = [3, 4, 2, 5]
var isSorted = true
print("陣列最後一個索引:",numbers.count - 1)

for i in 0..<numbers.count - 1 { //i不會到最後一個值
if numbers[i] > numbers[i + 1] { //目前的值 與 下一個值 做比較,如果大於就不符合條件false
isSorted = false
break
}
}

if isSorted {
print("由小排到大")
} else {
print("沒有由小排到大")
}

題目: 陣列中的數字由小排到大排列

var numbers = [3, 4, 2, 5]

for i in 0..<numbers.count {
//print("第\(i)次","範圍:",numbers.count - i - 1)//4 - 0 - 1(第一次)
for j in 0..<numbers.count - i - 1 {
//print("j索引:\(j)","目前:\(numbers[j])","下一個:\(numbers[j+1])")
if numbers[j] > numbers[j + 1] { //目前的值 與 下一個值 做比較,如果大於就不符合條件false
let temp = numbers[j] //建立temp臨時暫存空間
numbers[j] = numbers[j + 1]
numbers[j + 1] = temp
}
}
}

print("重新排列: \(numbers)")

//第0次 範圍: 3
//j索引:0 目前:3 下一個:4
//j索引:1 目前:4 下一個:2
//j索引:2 目前:4 下一個:5
//第1次 範圍: 2
//j索引:0 目前:3 下一個:2
//j索引:1 目前:3 下一個:4
//第2次 範圍: 1
//j索引:0 目前:2 下一個:3
//第3次 範圍: 0
//重新排列: [2, 3, 4, 5]

題目: 計算從某個數字開始,往後的 n 個偶數的總和

//從3開始,往後的三個偶數的總和
func sumOfEvenNumbers(startingFrom start: Int, count n: Int) -> Int {
var sum = 0
var number = start

for _ in 0..<n {
if number % 2 != 0 { //判斷是不是奇數
number += 1 //加1變偶數
}
sum += number
number += 2//下個數加2直接取得下個偶數
}

return sum
}

let startNumber = 3
let numberOfEvens = 3
let result = sumOfEvenNumbers(startingFrom: startNumber, count: numberOfEvens)

print("最終:\(result)")

//前 3 個偶數是:4, 6, 8
//總和是:4 + 6 + 8 = 18
//最終輸出 最終:18

題目: 九九乘法

var string1 = ""
for i in 1...9 {
for j in 1...9 { //跑完此循環才會跳出,換外層循環
string1 += "\(i)x\(j) "
}
string1 += "\n"
}
print(string1)

題目: 0~1000,計算每次骰子投出的次數

//0~1000,計算每次骰子投出的次數
var arrCount = Array(repeating: 0, count: 7)
for i in 0...1000{
var num = Int.random(in: 1...6)//限制1~6,所以不會改變第一個
arrCount[num] += 1
}
print("arrCount:",arrCount)

題目: 製作棋盤

for row in 1...8 {
print("========= r:",row)
for column in 1...8 {
print("r(\(row))+c(\(column))=",row+column)

if (row + column) % 2 == 0 {
print("🎨⬜️")
} else {
print("🎨⬛️")
}
}
}

--

--