71 lines
2.0 KiB
Rust
71 lines
2.0 KiB
Rust
use std::{cmp::Ordering, io};
|
|
|
|
fn main() {
|
|
println!("猜数游戏");
|
|
let secret_number: u32 = rand::random_range(1..=100);
|
|
// println!("The secret number is: {}", secret_number);
|
|
|
|
let mut count = 0;
|
|
loop {
|
|
let mut guess = String::new();
|
|
|
|
println!("请输入你的猜测:");
|
|
io::stdin().read_line(&mut guess).expect("读取输入错误!");
|
|
let guess_number: u32 = match guess.trim().parse() {
|
|
Ok(num) => num,
|
|
Err(_) => {
|
|
println!("请输入数字!");
|
|
continue;
|
|
}
|
|
};
|
|
|
|
count += 1;
|
|
|
|
match guess_number.cmp(&secret_number) {
|
|
Ordering::Less => println!("小了!"),
|
|
Ordering::Greater => println!("大了!"),
|
|
Ordering::Equal => {
|
|
println!("猜对了!");
|
|
println!("你一共猜了{}次", count);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 猜数字游戏 — 可指定数字范围,返回猜测次数
|
|
fn guess_game(low: u32, high: u32) -> u32 {
|
|
let secret = rand::random_range(low..=high);
|
|
let mut guess = String::new();
|
|
let mut count = 0;
|
|
|
|
loop {
|
|
guess.clear();
|
|
println!("请输入你的猜测 ({low}~{high}):");
|
|
io::stdin().read_line(&mut guess).expect("读取输入错误!");
|
|
|
|
let guess_num: u32 = match guess.trim().parse() {
|
|
Ok(n) if n < low || n > high => {
|
|
println!("数字不在范围内,请重新输入!");
|
|
continue;
|
|
}
|
|
Ok(n) => n,
|
|
Err(_) => {
|
|
println!("请输入有效的数字!");
|
|
continue;
|
|
}
|
|
};
|
|
|
|
count += 1;
|
|
|
|
match guess_num.cmp(&secret) {
|
|
Ordering::Less => println!("小了!"),
|
|
Ordering::Greater => println!("大了!"),
|
|
Ordering::Equal => {
|
|
println!("猜对了! 答案是 {secret},你一共猜了 {count} 次");
|
|
return count;
|
|
}
|
|
}
|
|
}
|
|
}
|