当前位置: 首页 > news >正文

猜数游戏-Rust版

cargo new guessing_game 创建项目


输入任意内容,并打印出来


main.rs:

use std::io; // 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入

fn main() {
    println!("猜数");

    println!("猜测一个数");


    let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串

    // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
    io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut

    // {}为占位符,类似golang里的%s,%d
    println!("你猜测的数是:{}", guess)
}

生成随机数


Cargo.toml

[package]
name = "guessing_game"
version = "0.1.0"
edition = "2018"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]
rand = "^0.3.14" # ^代表任何与0.3.14这个版本公共api兼容的版本都可以

rand包还依赖libc

alt

use std::io;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法

fn main() {
    println!("猜数");

    let secret_number = rand::thread_rng().gen_range(1101); // [a,b)
    println!("神秘数字是{}", secret_number);

    println!("猜测一个数");


    let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串

    // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
    io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut

    // {}为占位符,类似golang里的%s,%d
    println!("你猜测的数是:{}", guess)
}

alt

比较大小


use std::io;
use std::cmp::Ordering;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法

fn main() {
    println!("猜数");

    // i32 u32 i64,不指定则默认i32
    let secret_number = rand::thread_rng().gen_range(1101); // [a,b)
    println!("神秘数字是{}", secret_number);

    println!("猜测一个数");


    let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串

    // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
    io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut

    // shadow, 隐藏;(用同名变量隐藏旧变量)
    // trim 去掉空格等
    // parse 将字符创串装换为u32 类型
    let guess: u32 = guess.trim().parse().expect("Please type a number!");

    // {}为占位符,类似golang里的%s,%d
    println!("你猜测的数是:{}", guess);


    match guess.cmp(&secret_number) {
        Ordering::Less => println!("Too small!"), //arm,类似分支吧
        Ordering::Greater => println!("Too big!"), //arm,类似分支吧
        Ordering::Equal => println!("You win!"), //arm,类似分支吧
    }
}
alt
alt

做多次猜测,直到猜对


use std::io;
use std::cmp::Ordering;
// 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入
use rand::Rng; // trait,类似golang的接口,定义了很多方法

fn main() {
    println!("猜数");

    // i32 u32 i64,不指定则默认i32
    let secret_number = rand::thread_rng().gen_range(1101); // [a,b)
    println!("神秘数字是{}", secret_number);

    loop {
        println!("猜测一个数");

        let mut guess = String::new(); //String::new()返回一个String实例,创建一个空白的字符串

        // 读取一行内容,放到guess里; (io::stdin()返回一个句柄)
        io::stdin().read_line(&mut guess).expect("无法读取行");// 引用在Rust里默认也是不可变的,所以需要&mut

        // shadow, 隐藏;(用同名变量隐藏旧变量)
        // trim 去掉空格等
        // parse 将字符创串装换为u32 类型
        let guess: u32 = match guess.trim().parse() { // match,是rust错误处理的惯用方式
            Ok(num) => num,
            Err(_) => continue//_表示舍弃,不关心
        };


        // {}为占位符,类似golang里的%s,%d
        println!("你猜测的数是:{}", guess);


        match guess.cmp(&secret_number) {
            Ordering::Less => println!("Too small!"), //arm,类似分支吧
            Ordering::Greater => println!("Too big!"), //arm,类似分支吧
            Ordering::Equal => {
                println!("You win!");
                break;
            }
        }
    }
}
alt

本文由 mdnice 多平台发布

相关文章:

猜数游戏-Rust版

cargo new guessing_game 创建项目 输入任意内容,并打印出来 main.rs: use std::io; // 像String这些类型都在预先导入的prelude里,如果要使用的不在prelude里,则需要显式导入fn main() { println!("猜数"); println!("…...

从零起步:学习数据结构的完整路径

文章目录 1. 基础概念和前置知识2. 线性数据结构3. 栈和队列4. 树结构5. 图结构6. 散列表和哈希表7. 高级数据结构8. 复杂性分析和算法设计9. 实践和项目10. 继续学习和深入11. 学习资源12. 练习和实践 🎉欢迎来到数据结构学习专栏~从零起步:学习数据结构…...

如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器

描述 WebCenter 中的 HTML5 3D Collada Viewer(自 14.1 以来新增)要求在浏览器中启用 WebGL。较旧的浏览器可能不支持此功能,或者要求用户首先显式启用此功能。本页介绍如何为所有主要浏览器启用此功能。WebGL 3D 查看器 本文是以下超级用户…...

【计算机协议】第一章——HTTP协议详解

前言 HTTP(Hypertext Transfer Protocol)即超文本传输协议,是一种用于传输超媒体文档(例如HTML)的应用层协议。HTTP协议采用C/S(客户端/服务器)模式,客户端发起请求,服务…...

【FAQ】安防监控视频汇聚平台EasyCVR接入GB国标设备,无法显示通道信息的排查方法

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

Matlab 生成一定信噪比的信号

文章目录 【 1. 信噪比 】【 2. 功率归一化 】2.1 实信号实噪声2.2 实信号复噪声 【 3. 能量归一化 】3.1 实信号实噪声3.2 实信号复噪声 【 4. 小结 】 【 1. 信噪比 】 信噪比公式 1 : S N R 10 ∗ l o g 10 P s P n 信噪比公式1:SNR10*log_{10}\frac…...

[国产MCU]-W801开发实例-定时器

定时器 文章目录 定时器1、定时器介绍2、定时器驱动API3、定时器使用示例本文将详细介绍如何使用W801的定时器模块。 1、定时器介绍 W801的定时器包含一个32-bit自动加载的计数器,该计数器由系统时钟经过分频后驱动。 W801有 6路完全独立定时器。实现了精确的定时时间以及中断…...

基于 CentOS 7 构建 LVS-DR 群集,配置nginx负载均衡。

基于 CentOS 7 构建 LVS-DR 群集。 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld 安装ifconfig yum install net-tools.x86_64 -y 准备四台虚拟机 IP 用途 19.168.244.144 客户端 192.168.244.145 lvs 192.168.244.148 RS 192.168.244.149 RS 在DS上 …...

大数据——spark一文全知道

1、spark概述 spark是专为大规模数据处理而设计的快速通用计算引擎,与Hadoop的MapReduce功能类似,但它是基于内存的分布式计算框架,存储还是采用HDFS。 MapReduce和Spark的区别 MapReduce的MapReduce之间需要通过磁盘进行数据传递&#xf…...

Linux命令200例:telnet用于远程登录的网络协议(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…...

使用 eBPF 在云中实现网络可观测性

可观测性是一种了解和解释应用当前状态的能力,也是一种知道何时出现问题的方法。随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多,可观察性受到了广泛关注。许多应用程序都有严格的承诺,比如在停机时间、延迟和吞…...

linux安装部署gitlab全教程,包含配置中文

linux安装部署gitlab全教程,包含配置中文 大家好,我是酷酷的韩~ 1.前期准备 安装包下载地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 我这里选择的这个gitlab-ce-15.7.3-ce.0.el7.x86_64.rpm 还有一些相关依赖包(地址等审核过我放到…...

软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术

软考高级系统架构设计师系列论文八十:论企业信息化战略规划技术 一、企业信息化相关知识点二、摘要三、正文四、总结一、企业信息化相关知识点 软考高级系统架构设计师:企业信息化战略与实施...

使用ChatGPT构建一个AIML聊天机器人是什么体验

​ 使用ChatGPT构建一个AIML聊天机器人是什么体验,使用ChatGPT将C#代码转换为Swift代码以实现Swift版的Aiml聊天机器人,AIML(全名为Artificial Intelligence Markup Language)是一种基于XML模式匹配的人工智能标记语言&#xff0c…...

[JavaWeb]【九】web后端开发-SpringBootWeb案例(菜单)

目录 一、准备工作 1.1 需求 1.2 环境搭建 1.2.1 准备数据库&表 1.2.2 创建springboot工程 1.2.3 配置application.properties & 准备对应实体类 1.2.3.1 application.properties 1.2.3.2 实体类 1.2.3.2.1 Emp类 1.2.3.2.2 Dept类 1.2.4 准备对应的Mapper、…...

vue 主组件把日期选择器给子组件props传obj值, 与子组件监听 watch对象或对象属性

1 主组件 1.1 :passObj 这种 非v-model ; change"DateChange"触发事件 <template> <div class"date-picker-panel"><el-date-picker v-model"value2" type"datetimerange" :picker-options"pickerOptions"…...

WebDAV之π-Disk派盘 + 一刻日记

一刻日记是一款日记、笔记和备忘录应用程序,旨在提供一个简单而专注的日记写作工具。它提供了一个干净、直观的界面,允许用户记录和管理他们的日常事务、个人情感、成就和目标等内容。 一刻日记的主要功能包括: – 创建和编辑日记、用户可以撰写和编辑自己的日记,记录重要…...

springboot aop实现接口防重复操作

一、前言 有时在项目开发中某些接口逻辑比较复杂&#xff0c;响应时间长&#xff0c;那么可能导致重复提交问题。 二、如何解决 1.先定义一个防重复提交的注解。 import java.lang.annotation.*;Inherited Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Do…...

ubuntu18.04复现yolo v8环境配置之CUDA与pytorch版本问题以及多CUDA版本安装及切换

最近在复现yolo v8的程序&#xff0c;特记录一下过程 环境&#xff1a;ubuntu18.04ros melodic 小知识&#xff1a;GPU并行计算能力高于CPU—B站UP主说的 Ubuntu可以安装多个版本的CUDA。如果某个程序的Pyorch需要不同版本的CUDA&#xff0c;不必删除之前的CUDA&#xff0c;…...

Yaml配置文件读取方法

在日常的代码中&#xff0c;有一些值是配置文件中定义的&#xff0c;这些值可以根据用户的要求进行调整和改变。这往往会写在yaml格式的文件中。这样开放程序给用户时&#xff0c;就可以不必开放对应的源码&#xff0c;只开放yaml格式的配置文件即可。 将配置文件中的值读入程…...

通达信数据获取革新:用MOOTDX构建极简股票分析系统全攻略

通达信数据获取革新&#xff1a;用MOOTDX构建极简股票分析系统全攻略 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在量化投资与金融数据分析领域&#xff0c;开发者常面临数据获取的三重困境&a…...

如何用LLVIP数据集提升夜间行人检测?YOLOv5实战教程(附避坑指南)

夜间行人检测实战&#xff1a;用LLVIP数据集优化YOLOv5模型的完整指南 当路灯成为城市夜晚唯一的光源&#xff0c;传统监控摄像头的视野开始变得模糊不清——这正是计算机视觉工程师在安防领域最常遇到的挑战之一。LLVIP数据集的出现为这一困境提供了突破性的解决方案&#xf…...

3分钟搞定Windows启动盘制作:WinDiskWriter让macOS用户告别复杂命令行

3分钟搞定Windows启动盘制作&#xff1a;WinDiskWriter让macOS用户告别复杂命令行 【免费下载链接】windiskwriter &#x1f5a5; A macOS app that creates bootable USB drives for Windows. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. …...

从零到一:OpenClaw对接百川2-13B量化模型的完整调试日志

从零到一&#xff1a;OpenClaw对接百川2-13B量化模型的完整调试日志 1. 项目背景与动机 上周在测试本地大模型自动化任务时&#xff0c;发现OpenClaw默认对接的Qwen模型对长文本处理容易截断。正好看到星图平台上线了百川2-13B量化镜像&#xff0c;显存需求仅10GB左右&#x…...

2026年最新出炉!汉中装修公司口碑排行榜大揭秘来了!

装修是一件大事&#xff0c;关乎着未来生活的品质和舒适度。在汉中&#xff0c;众多装修公司让人眼花缭乱&#xff0c;如何选择一家靠谱的装修公司成为了许多业主的难题。今天&#xff0c;我们就来揭秘2026年汉中装修公司口碑排行榜&#xff0c;重点推荐汉中恒丰装饰&#xff0…...

大模型学习进阶:收藏必备,小白程序员快速掌握RAG架构核心技术!

大模型学习进阶&#xff1a;收藏必备&#xff0c;小白程序员快速掌握RAG架构核心技术&#xff01; 本文深入解析了RAG&#xff08;检索增强生成&#xff09;大模型的核心技术及其重要性&#xff0c;详细介绍了标准RAG、对话式RAG、纠正式RAG、自适应RAG、自我反思RAG、融合RAG、…...

避坑指南:华三vFW2000在ESXI虚拟机中的常见安装错误与解决方案

华三vFW2000虚拟防火墙在ESXI环境部署的深度排错手册 当你在深夜的机房盯着ESXI控制台里反复报错的vFW2000安装界面时&#xff0c;那种焦灼感我深有体会。去年某金融客户数据中心迁移项目中&#xff0c;我们团队连续遭遇了镜像校验失败、存储空间分配异常、虚拟网卡绑定错误等…...

计算机硕,是走算法岗还是开发岗?

咳咳&#xff0c;煮啵说句可能得罪人的话——这个问题本身就问错了。不是说这个问题不重要&#xff0c;而是大部分人在问这个问题的时候&#xff0c;脑子里的决策框架就是拧的。他们把”算法”和”开发”想象成两条泾渭分明的路&#xff0c;然后试图在岔路口做一个一劳永逸的选…...

别再傻傻分不清了!AUTOSAR里那三种接口到底怎么用?

AUTOSAR接口全解析&#xff1a;从快递员到内部电话的通信哲学 刚接触AUTOSAR的工程师们&#xff0c;面对琳琅满目的接口类型时&#xff0c;是否常有种"明明每个字都认识&#xff0c;连起来却看不懂"的困惑&#xff1f;就像第一次走进高级餐厅&#xff0c;面对三种看…...

开发者专属:OpenClaw调试Qwen3-32B镜像的3个高级技巧

开发者专属&#xff1a;OpenClaw调试Qwen3-32B镜像的3个高级技巧 1. 为什么需要调试OpenClaw与Qwen3-32B的交互 当我第一次在本地RTX 4090D上部署Qwen3-32B镜像并接入OpenClaw时&#xff0c;本以为开箱即用的组合会一帆风顺。但实际运行自动化任务时&#xff0c;发现三个典型…...