🎃个人专栏:
🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客
🐳Java基础:Java基础_IT闫的博客-CSDN博客
🐋c语言:c语言_IT闫的博客-CSDN博客
🐟MySQL:数据结构_IT闫的博客-CSDN博客
🐠数据结构:数据结构_IT闫的博客-CSDN博客
💎C++:C++_IT闫的博客-CSDN博客
🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客
💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客
🥏python:python_IT闫的博客-CSDN博客
🐠离散数学:离散数学_IT闫的博客-CSDN博客
🥽Linux:Linux_Y小夜的博客-CSDN博客
🚝Rust:Rust_Y小夜的博客-CSDN博客
欢迎收看,希望对大家有用!
学习推荐:
在当今这个飞速发展的信息时代,人工智能(AI)已经成为了一个不可或缺的技术力量,它正在逐步改变着我们的生活、工作乃至整个社会的运作方式。从智能语音助手到自动驾驶汽车,从精准医疗到智慧城市,人工智能的应用已经渗透到了我们生活的方方面面。因此,学习和掌握人工智能相关的知识和技能,对于任何希望在这个时代保持竞争力的个人来说,都已经变得至关重要。
然而,人工智能是一个涉及数学、计算机科学、数据科学、机器学习、神经网络等多个领域的交叉学科,其学习曲线相对陡峭,对初学者来说可能会有一定的挑战性。幸运的是,随着互联网教育资源的丰富,现在有大量优秀的在线平台和网站提供了丰富的人工智能学习材料,包括视频教程、互动课程、实战项目等,这些资源无疑为学习者打开了一扇通往人工智能世界的大门。
前些天发现了一个巨牛的人工智能学习网站:前言 – 人工智能教程通俗易懂,风趣幽默,忍不住分享一下给大家。
目录
🎯前言
根据条件是否为真来决定是否执行某些代码,以及根据条件是否为真来重复运行一段代码的能力是大部分编程语言的基本组成部分。Rust 代码中最常见的用来控制执行流的结构是
if
表达式和循环。
🎯if表达式
fn main() {
let number = 3;
if number < 5 {
println!("condition was true");
} else {
println!("condition was false");
}
}
所有的
if
表达式都以if
关键字开头,其后跟一个条件。在这个例子中,条件检查变量number
的值是否小于 5。在条件为true
时希望执行的代码块位于紧跟条件之后的大括号中。
if
表达式允许根据条件执行不同的代码分支。你提供一个条件并表示 “如果条件满足,运行这段代码;如果条件不满足,不运行这段代码。”注意:条件 必须 是
bool
值。如果条件不是bool
值,我们将得到一个错误。
🎯使用else if 处理多重条件
fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); } }
当执行这个程序时,它按顺序检查每个
if
表达式并执行第一个条件为true
的代码块。注意即使 6 可以被 2 整除,也不会输出number is divisible by 2
,更不会输出else
块中的number is not divisible by 4, 3, or 2
。原因是 Rust 只会执行第一个条件为true
的代码块,并且一旦它找到一个以后,甚至都不会检查剩下的条件了。
🎯let语句中使用if
因为
if
是一个表达式,我们可以在let
语句的右侧使用它,如:fn main() { let condition = true; let number = if condition { 5 } else { 6 }; println!("The value of number is: {number}"); }
注意:代码块的值是其最后一个表达式的值,而数字本身就是一个表达式。
并且,Rust是强类型,变量比较必须类型一致。
🎯循环
🚝使用loop
暴力方法:直到我们手动停止程序。大部分终端都支持一个快捷键,ctrl-c,来终止一个陷入无限循环的程序。
但是,Rust 提供了一种从代码中跳出循环的方法。可以使用
break
关键字来告诉程序何时停止循环,我们在猜谜游戏中也使用了continue
。循环中的continue
关键字告诉程序跳过这个循环迭代中的任何剩余代码,并转到下一个迭代。
🚝循环返回值
loop
的一个用例是重试可能会失败的操作,比如检查线程是否完成了任务。然而你可能会需要将操作的结果传递给其它的代码。如果将返回值加入你用来停止循环的break
表达式,它会被停止的循环返回:fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 { break counter * 2; } }; println!("The result is {result}"); }
多重循环可以使用标签:
如果存在嵌套循环,
break
和continue
应用于此时最内层的循环。你可以选择在一个循环上指定一个 循环标签(loop label),然后将标签与break
或continue
一起使用,使这些关键字应用于已标记的循环而不是最内层的循环。下面是一个包含两个嵌套循环的示例fn main() { let mut count = 0; 'counting_up: loop { println!("count = {count}"); let mut remaining = 10; loop { println!("remaining = {remaining}"); if remaining == 9 { break; } if count == 2 { break 'counting_up; } remaining -= 1; } count += 1; } println!("End count = {count}"); }
外层循环有一个标签
counting_up
,它将从 0 数到 2。没有标签的内部循环从 10 向下数到 9。第一个没有指定标签的break
将只退出内层循环。break 'counting_up;
语句将退出外层循环。
🚝while循环
在程序中计算循环的条件也很常见。当条件为
true
,执行循环。当条件不再为true
,调用break
停止循环。这个循环类型可以通过组合loop
、if
、else
和break
来实现;fn main() { let mut number = 3; while number != 0 { println!("{number}!"); number -= 1; } println!("LIFTOFF!!!"); }
这种结构消除了很多使用
loop
、if
、else
和break
时所必须的嵌套,这样更加清晰。当条件为true
就执行,否则退出循环。
🚝for循环
for
循环的安全性和简洁性使得它成为 Rust 中使用最多的循环结构。倒计时例子,大部分 Rustacean 也会使用
for
循环。这么做的方式是使用Range
,它是标准库提供的类型,用来生成从一个数字开始到另一个数字之前结束的所有数字的序列。下面是一个使用
for
循环来倒计时的例子,它还使用了一个我们还未讲到的方法,rev
,用来反转 range: 注意: 以下代码不会踏足到数字 9 ,仅从一个数字开始到另一个数字之前fn main() { for number in (1..4).rev() { println!("{number}!"); } println!("LIFTOFF!!!"); }