循环 #

一、while循环 #

1.1 基本语法 #

julia
while condition
    statements
end

1.2 基本示例 #

julia
i = 1
while i <= 5
    println(i)
    global i += 1
end

1.3 无限循环 #

julia
while true
    print("Enter a number (0 to exit): ")
    n = parse(Int, readline())
    n == 0 && break
    println("You entered: $n")
end

1.4 条件循环 #

julia
total = 0
while total < 100
    total += rand(1:20)
    println("Total: $total")
end

二、for循环 #

2.1 基本语法 #

julia
for var in iterable
    statements
end

2.2 范围迭代 #

julia
for i in 1:5
    println(i)
end

for i in 1:2:10
    println(i)
end

for i in 10:-1:1
    println(i)
end

2.3 数组迭代 #

julia
arr = [10, 20, 30, 40, 50]

for x in arr
    println(x)
end

for (i, x) in enumerate(arr)
    println("Index $i: $x")
end

2.4 字典迭代 #

julia
d = Dict("a" => 1, "b" => 2, "c" => 3)

for (k, v) in d
    println("$k => $v")
end

for k in keys(d)
    println(k)
end

for v in values(d)
    println(v)
end

2.5 字符串迭代 #

julia
s = "Hello"

for c in s
    println(c)
end

for (i, c) in enumerate(s)
    println("$i: $c")
end

三、嵌套循环 #

3.1 基本嵌套 #

julia
for i in 1:3
    for j in 1:3
        println("($i, $j)")
    end
end

3.2 简洁语法 #

julia
for i in 1:3, j in 1:3
    println("($i, $j)")
end

3.3 矩阵迭代 #

julia
mat = [1 2 3; 4 5 6; 7 8 9]

for i in 1:size(mat, 1)
    for j in 1:size(mat, 2)
        println("mat[$i,$j] = $(mat[i,j])")
    end
end

for i in axes(mat, 1), j in axes(mat, 2)
    println("mat[$i,$j] = $(mat[i,j])")
end

3.4 九九乘法表 #

julia
for i in 1:9
    for j in 1:i
        print("$(j)×$(i)=$(i*j)\t")
    end
    println()
end

四、循环控制 #

4.1 break #

break立即退出循环:

julia
for i in 1:10
    i == 5 && break
    println(i)
end

4.2 continue #

continue跳过当前迭代:

julia
for i in 1:10
    i % 2 == 0 && continue
    println(i)
end

4.3 嵌套循环控制 #

使用标签控制嵌套循环:

julia
outer: for i in 1:3
    for j in 1:3
        if i == 2 && j == 2
            break outer
        end
        println("($i, $j)")
    end
end

五、迭代器 #

5.1 常用迭代器 #

julia
for x in eachindex([10, 20, 30])
    println(x)
end

for x in Iterators.repeated(5, 3)
    println(x)
end

for x in Iterators.cycle([1, 2], 3)
    println(x)
end

5.2 迭代器组合 #

julia
for (a, b) in zip([1, 2, 3], ["a", "b", "c"])
    println("$a -> $b")
end

for x in Iterators.product([1, 2], ["a", "b"])
    println(x)
end

for x in Iterators.flatten([[1, 2], [3, 4]])
    println(x)
end

5.3 迭代器过滤 #

julia
for x in Iterators.filter(x -> x > 2, [1, 2, 3, 4, 5])
    println(x)
end

六、数组推导 #

6.1 基本推导 #

julia
[x^2 for x in 1:5]
[x for x in 1:10 if x % 2 == 0]

6.2 多变量推导 #

julia
[x * y for x in 1:3, y in 1:3]
[(x, y) for x in 1:3 for y in 1:3]

6.3 字典推导 #

julia
Dict(string(i) => i^2 for i in 1:5)

七、实践练习 #

7.1 练习1:斐波那契数列 #

julia
function fibonacci(n)
    fib = [0, 1]
    while length(fib) < n
        push!(fib, fib[end] + fib[end-1])
    end
    return fib[1:n]
end

fibonacci(10)

7.2 练习2:素数判断 #

julia
function is_prime(n)
    n < 2 && return false
    for i in 2:isqrt(n)
        n % i == 0 && return false
    end
    return true
end

function primes_up_to(n)
    [i for i in 2:n if is_prime(i)]
end

primes_up_to(50)

7.3 练习3:矩阵乘法 #

julia
function matrix_multiply(A, B)
    rows_A, cols_A = size(A)
    rows_B, cols_B = size(B)
    
    cols_A == rows_B || error("Dimension mismatch")
    
    C = zeros(rows_A, cols_B)
    for i in 1:rows_A
        for j in 1:cols_B
            for k in 1:cols_A
                C[i, j] += A[i, k] * B[k, j]
            end
        end
    end
    return C
end

A = [1 2; 3 4]
B = [5 6; 7 8]
matrix_multiply(A, B)

7.4 练习4:猜数字游戏 #

julia
function guess_number()
    target = rand(1:100)
    guesses = 0
    
    println("Guess a number between 1 and 100")
    
    while true
        print("Your guess: ")
        guess = parse(Int, readline())
        global guesses += 1
        
        if guess == target
            println("Correct! You got it in $guesses guesses")
            break
        elseif guess < target
            println("Too low, try again")
        else
            println("Too high, try again")
        end
    end
end

八、总结 #

本章我们学习了:

  1. while循环:条件循环
  2. for循环:迭代循环
  3. 嵌套循环:多层循环
  4. 循环控制:break和continue
  5. 迭代器:各种迭代工具
  6. 数组推导:简洁的数组创建

接下来让我们学习Julia的异常处理!

最后更新:2026-03-27