循环语句 #
一、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