猜数游戏Rust版


//引用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);
            }
        }
    }
}

 

posted @ 2024-01-11 22:08  KloseYu  阅读(3)  评论(0编辑  收藏  举报