//引用io库 类似c#的using
use std::cmp::Ordering;
use std::io;
use rand::Rng;
fn main() {
println!("这是一个猜数游戏");
println!("请输入一个数字");
loop {
//mut 为mutable可变,没有则为不可变 String::new()则为静态方法
let mut guessNum = String::new();
io::stdin() //&是一个引用 //result的分支为成功和失败
.read_line(&mut guessNum)
.expect("");
//Rust的随机函数
//包含下限不包含上限 即为101-1
let secret_rand_num: u32 = rand::thread_rng().gen_range(1..101);
//调试判断
if cfg!(dubug_assertions){
println!("神秘数字是:{}", &secret_rand_num);
} /*else {
println!("神秘数字是:{}", "********");
}*/
let true_num = secret_rand_num;
//这个字符串模板类似于Python
println!("你猜的数字是:{}", guessNum);
/*
if true_num > guessNum {
println!("数字太小");
println!("实际数字是:{}", true_num);
} else if true_num == guessNum {
println!("恭喜你答对了");
println!("实际数字是:{}", true_num);
break;
} else {
println!("数字太大");
// println!("实际数字是:{}", true_num);
}
*/
let guessNum: u32 = match guessNum.trim().parse() {
Ok(num) => num,
Err(_) => {
eprintln!("你输入的类型或取值范围有误请重新输入:");
continue
},
};
//类似Scala的 Match Case 语句
match guessNum.cmp(&true_num) {
Ordering::Less => {
println!("数字太小");
// println!("实际数字是:{}", true_num);
}
Ordering::Equal => {
println!("恭喜你答对了");
println!("实际数字是:{}", true_num);
break;
}
Ordering::Greater => {
println!("数字太大");
// println!("实际数字是:{}", true_num);
}
}
}
}
猜数游戏Rust版
于 2024-01-11 22:19:53 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)