循环 #
一、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
八、总结 #
本章我们学习了:
- while循环:条件循环
- for循环:迭代循环
- 嵌套循环:多层循环
- 循环控制:break和continue
- 迭代器:各种迭代工具
- 数组推导:简洁的数组创建
接下来让我们学习Julia的异常处理!
最后更新:2026-03-27