«

入门小练习

ljierui 发布于 阅读:66 技术杂谈


1.1、猜数游戏

// 导入io包
use std::io;
fn main() {
    println!("请输入你要猜测的数字");
    // 创建一个可变的变量guess,并赋值一个新的字符串
    // 定义属性关键字 let
    // 属性是可变的关键字 mut
    // 如果不可变则不加 mut
    let mut guess = String::new();

    // 通过io获取字符串的输入输出
    io::stdin().read_line(&mut guess).expect("无法读取行");

    // 打印这个字符串
    println!("这个数字是{}",guess);
}

1.2、生成随机数

// 导入rand包
// cargo.toml 
/*
[dependencies]
rand = "0.7.0"
*/
use rand::Rng;

fn main() {
    // 生成随机数
    println!("游戏开始");
    let secret_number = rand::thread_rng().gen_range(1,101);
    println!("生产的随机数是: {} ",secret_number);
}

1.3、比较随机数和猜测数

// 导入io包
use std::io;
// 导入rand包
use rand::Rng;
// 导入Ordering包
use std::cmp::Ordering;

fn main() {
    // 生成随机数
    println!("游戏开始");
    let secret_number = rand::thread_rng().gen_range(1,101);
    println!("生产的随机数是: {} ",secret_number);

    println!("请输入你要猜测的数字");
    // 创建一个可变的变量guess,并赋值一个新的字符串
    let mut guess = String::new();

    // 通过io获取字符串的输入输出
    io::stdin().read_line(&mut guess).expect("无法读取行");

    // 因为要比较的类型不一样,所以要类型转换
    let guess:u32 = guess.trim().parse().expect("Please type a number");
    // 打印这个字符串
    println!("这个数字是{}",guess);

    // 通过比较不同的结果
    match guess.cmp(&secret_number) {
        Ordering::Less => println!("too small!"),
        Ordering::Greater => println!("Too big!"),
        Ordering::Equal => println!("You win"),

    }
}

1.4、改进版本加入循环一直运行

// 导入io包
use std::io;
// 导入rand包
use rand::Rng;
// 导入Ordering包
use std::cmp::Ordering;

fn main() {
    // 生成随机数
    println!("游戏开始");
    let secret_number = rand::thread_rng().gen_range(1,101);
    loop {
        println!("请输入你要猜测的数字");
    // 创建一个可变的变量guess,并赋值一个新的字符串
    let mut guess = String::new();

    // 通过io获取字符串的输入输出
    io::stdin().read_line(&mut guess).expect("无法读取行");

    // 因为要比较的类型不一样,所以要类型转换
    // 因为parse返回结果集是枚举类型,也可以通过match去处理非数字造成的崩溃
    let guess:u32 = match guess.trim().parse(){
        Ok(num) => num,
        Err(_) => continue,
    };
    // 打印这个字符串
    println!("这个数字是{}",guess);

    // 通过比较不同的结果
    match guess.cmp(&secret_number) {
        Ordering::Less => println!("too small!"),
        Ordering::Greater => println!("Too big!"),
        // 如果猜对则跳出循环
        Ordering::Equal => {
            println!("You win");
            break;
        }

    }
    }
}

rust语言学习

推荐阅读: