入门小练习
1.1、猜数游戏
// 导入io包
use std::io;
fn main() {
println!("请输入你要猜测的数字");
// 创建一个可变的变量guess,并赋值一个新的字符串
// 定义属性关键字 let
// 属性是可变的关键字 mut
// 如果不可变则不加 mut
let mut guess = String::new();
// 通过io获取字符串的输入输出
io::stdin().read_line(&mut guess).expect("无法读取行");
// 打印这个字符串
println!("这个数字是{}",guess);
}
1.2、生成随机数
// 导入rand包
// cargo.toml
/*
[dependencies]
rand = "0.7.0"
*/
use rand::Rng;
fn main() {
// 生成随机数
println!("游戏开始");
let secret_number = rand::thread_rng().gen_range(1,101);
println!("生产的随机数是: {} ",secret_number);
}
1.3、比较随机数和猜测数
// 导入io包
use std::io;
// 导入rand包
use rand::Rng;
// 导入Ordering包
use std::cmp::Ordering;
fn main() {
// 生成随机数
println!("游戏开始");
let secret_number = rand::thread_rng().gen_range(1,101);
println!("生产的随机数是: {} ",secret_number);
println!("请输入你要猜测的数字");
// 创建一个可变的变量guess,并赋值一个新的字符串
let mut guess = String::new();
// 通过io获取字符串的输入输出
io::stdin().read_line(&mut guess).expect("无法读取行");
// 因为要比较的类型不一样,所以要类型转换
let guess:u32 = guess.trim().parse().expect("Please type a number");
// 打印这个字符串
println!("这个数字是{}",guess);
// 通过比较不同的结果
match guess.cmp(&secret_number) {
Ordering::Less => println!("too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => println!("You win"),
}
}
1.4、改进版本加入循环一直运行
// 导入io包
use std::io;
// 导入rand包
use rand::Rng;
// 导入Ordering包
use std::cmp::Ordering;
fn main() {
// 生成随机数
println!("游戏开始");
let secret_number = rand::thread_rng().gen_range(1,101);
loop {
println!("请输入你要猜测的数字");
// 创建一个可变的变量guess,并赋值一个新的字符串
let mut guess = String::new();
// 通过io获取字符串的输入输出
io::stdin().read_line(&mut guess).expect("无法读取行");
// 因为要比较的类型不一样,所以要类型转换
// 因为parse返回结果集是枚举类型,也可以通过match去处理非数字造成的崩溃
let guess:u32 = match guess.trim().parse(){
Ok(num) => num,
Err(_) => continue,
};
// 打印这个字符串
println!("这个数字是{}",guess);
// 通过比较不同的结果
match guess.cmp(&secret_number) {
Ordering::Less => println!("too small!"),
Ordering::Greater => println!("Too big!"),
// 如果猜对则跳出循环
Ordering::Equal => {
println!("You win");
break;
}
}
}
}
推荐阅读: