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