rust 学习记录 II 猜数游戏

猜数游戏案例

目标生成一个 1 到 100 之间的随机数,用户输入,然后机器提示大了,还是小了,知道正确。

换源

在使用 rust 开发的时候我们需要使用第三方包,如果从官网下载就太慢了,这时候我们可以将下载源换成国内的:

位置:
image.png

将 config.toml (没有就创建)中写入:

[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

猜数游戏的代码

从代码中学习一些东西。通用的编程的概念后面会讲述。

use rand::Rng; // trait  -> 接口
use std::cmp::Ordering;
use std::io;

fn main() {
    // println! 是一个宏,! 表示调用宏而不是函数
    // 宏: 一种在 Rust 代码中编写其他代码的方式
    println!("猜数!");
    println!("请输入你猜的数:");

    let secret_number = rand::thread_rng().gen_range(1..101);

    println!("随机数是:{}", secret_number);

    // 循环执行
    loop {
        // 定义一个可变变量
        // String::new() 返回一个新的空字符串
        // ::new() 表示 new() 是 String 类型的一个关联函数
        // 关联函数:不依赖于任何对象实例调用的函数,类似于静态方法,位于 impl 块中
        let mut guess = String::new();
        // 读取用户输入
        // read_line() 将用户输入附加到字符串中,返回 io::Result 类型
        // 返回值是一个枚举类型,io::Result 有两个成员:Ok 和 Err
        // Ok 表示操作成功,Err 表示操作失败,Err 包含失败的信息
        // 如果是 Ok,expect() 会返回 Ok 中的值
        // 如果是 Err,expect() 会使程序崩溃,并显示 expect() 中的信息
        io::stdin().read_line(&mut guess).expect("读取失败");

        // 将字符串转换为数字
        // trim() :去除字符串首尾的空白字符
        // parse() :将字符串转换为数字
        // 我们这里使用 match 来代替 expect(),处理 parse() 返回的 Result 类型
        let guess: i32 = match guess.trim().parse() {
            // parse() 返回一个 Result 类型
            // Ok 表示转换成功,Err 表示转换失败
            Ok(num) => num,
            Err(_) => continue,
        };
        match guess.cmp(&secret_number) {
            // Ordering 是一个枚举类型,有三个成员:Less、Greater、Equal
            Ordering::Less => println!("太小了"),
            Ordering::Greater => println!("太大了"),
            Ordering::Equal => {
                println!("猜对了");
                break;
            }
        }
    }
}

效果:
image.png

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城南顾北

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值