iOS-Day5 for loop 迴圈練習
Published in
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("🎨⬛️")
}
}
}