循环语句 #

一、for-in循环 #

1.1 遍历区间 #

swift
for i in 1...5 {
    print(i)
}

for i in 1..<5 {
    print(i)
}

1.2 遍历数组 #

swift
let fruits = ["苹果", "香蕉", "橙子"]

for fruit in fruits {
    print(fruit)
}

1.3 遍历字典 #

swift
let scores = ["张三": 90, "李四": 85, "王五": 95]

for (name, score) in scores {
    print("\(name): \(score)分")
}

1.4 遍历字符串 #

swift
let text = "Swift"

for char in text {
    print(char)
}

1.5 带索引遍历 #

swift
let fruits = ["苹果", "香蕉", "橙子"]

for (index, fruit) in fruits.enumerated() {
    print("\(index): \(fruit)")
}

1.6 忽略循环变量 #

swift
for _ in 1...5 {
    print("Hello")
}

1.7 步长控制 #

swift
let range = stride(from: 0, to: 10, by: 2)
for i in range {
    print(i)
}

let reversedRange = stride(from: 10, through: 0, by: -2)
for i in reversedRange {
    print(i)
}

二、while循环 #

2.1 基本while循环 #

swift
var count = 0

while count < 5 {
    print(count)
    count += 1
}

2.2 条件控制 #

swift
var sum = 0
var i = 1

while sum < 100 {
    sum += i
    i += 1
}

print("Sum: \(sum), i: \(i)")

2.3 可选绑定while #

swift
var items: [Int]? = [1, 2, 3, 4, 5]

while let item = items?.popLast() {
    print(item)
}

三、repeat-while循环 #

3.1 基本用法 #

swift
var count = 0

repeat {
    print(count)
    count += 1
} while count < 5

3.2 至少执行一次 #

swift
var condition = false

repeat {
    print("至少执行一次")
} while condition

3.3 用户输入验证 #

swift
import Foundation

var input: String?
var isValid = false

repeat {
    print("请输入一个数字:")
    input = readLine()
    if let input = input, Int(input) != nil {
        isValid = true
    }
} while !isValid

print("输入有效: \(input!)")

四、循环控制语句 #

4.1 break #

swift
for i in 1...10 {
    if i == 5 {
        break
    }
    print(i)
}

4.2 continue #

swift
for i in 1...10 {
    if i % 2 == 0 {
        continue
    }
    print(i)
}

4.3 带标签的break #

swift
outerLoop: for i in 1...3 {
    for j in 1...3 {
        if i == 2 && j == 2 {
            break outerLoop
        }
        print("(\(i), \(j))")
    }
}

4.4 带标签的continue #

swift
outerLoop: for i in 1...3 {
    for j in 1...3 {
        if j == 2 {
            continue outerLoop
        }
        print("(\(i), \(j))")
    }
}

五、循环与集合 #

5.1 过滤 #

swift
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var evenNumbers: [Int] = []

for number in numbers {
    if number % 2 == 0 {
        evenNumbers.append(number)
    }
}

print(evenNumbers)

5.2 映射 #

swift
let numbers = [1, 2, 3, 4, 5]
var doubled: [Int] = []

for number in numbers {
    doubled.append(number * 2)
}

print(doubled)

5.3 归约 #

swift
let numbers = [1, 2, 3, 4, 5]
var sum = 0

for number in numbers {
    sum += number
}

print(sum)

六、嵌套循环 #

6.1 二维数组遍历 #

swift
let matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix {
    for element in row {
        print(element, terminator: " ")
    }
    print()
}

6.2 乘法表 #

swift
for i in 1...9 {
    for j in 1...i {
        print("\(j)×\(i)=\(i*j)", terminator: "\t")
    }
    print()
}

6.3 图形输出 #

swift
let rows = 5

for i in 1...rows {
    for _ in 1...i {
        print("*", terminator: "")
    }
    print()
}

七、实际应用 #

7.1 查找元素 #

swift
let numbers = [3, 7, 2, 9, 5, 1]
let target = 9
var found = false
var index = -1

for (i, number) in numbers.enumerated() {
    if number == target {
        found = true
        index = i
        break
    }
}

if found {
    print("找到 \(target) 在索引 \(index)")
}

7.2 计算阶乘 #

swift
func factorial(_ n: Int) -> Int {
    var result = 1
    for i in 1...n {
        result *= i
    }
    return result
}

print(factorial(5))

7.3 斐波那契数列 #

swift
func fibonacci(_ n: Int) -> [Int] {
    guard n > 0 else { return [] }
    
    var sequence = [0, 1]
    
    while sequence.count < n {
        let next = sequence[sequence.count - 1] + sequence[sequence.count - 2]
        sequence.append(next)
    }
    
    return Array(sequence.prefix(n))
}

print(fibonacci(10))

7.4 冒泡排序 #

swift
func bubbleSort(_ array: [Int]) -> [Int] {
    var arr = array
    let n = arr.count
    
    for i in 0..<n {
        for j in 0..<(n - 1 - i) {
            if arr[j] > arr[j + 1] {
                arr.swapAt(j, j + 1)
            }
        }
    }
    
    return arr
}

print(bubbleSort([5, 3, 8, 4, 2]))

7.5 猜数字游戏 #

swift
import Foundation

let target = Int.random(in: 1...100)
var guess = 0
var attempts = 0

print("猜一个1到100之间的数字")

while guess != target {
    attempts += 1
    
    if let input = readLine(), let number = Int(input) {
        guess = number
        
        if guess < target {
            print("太小了,再试一次")
        } else if guess > target {
            print("太大了,再试一次")
        }
    }
}

print("恭喜你猜对了!用了\(attempts)次")

八、性能优化 #

8.1 减少循环内计算 #

swift
let array = [1, 2, 3, 4, 5]
let multiplier = 10

for item in array {
    print(item * multiplier)
}

8.2 使用高阶函数 #

swift
let numbers = [1, 2, 3, 4, 5]

let doubled = numbers.map { $0 * 2 }
print(doubled)

let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)

let sum = numbers.reduce(0, +)
print(sum)

8.3 提前终止 #

swift
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

var found = false
for number in numbers {
    if number == 5 {
        found = true
        break
    }
}

let hasFive = numbers.contains(5)

九、总结 #

本章学习了Swift的循环语句:

  • for-in:遍历序列、区间、集合
  • while:条件循环
  • repeat-while:至少执行一次的循环
  • 循环控制:break、continue、标签

最佳实践:

  • 优先使用for-in遍历集合
  • 使用高阶函数简化代码
  • 避免无限循环
  • 合理使用break和continue

下一章,我们将学习控制转移语句!

最后更新:2026-03-26