learning-rust/part1/src/main.rs

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;
}
}
}
}