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

做网站公司 汉狮网络磐安网站建设公司

做网站公司 汉狮网络,磐安网站建设公司,wordpress建企业网站教程,广西企业响应式网站建设公司文章目录 编程实现猜数字游戏游戏规则创建新项目默认代码处理用户输入代码解析 生成随机数添加依赖生成逻辑 比较猜测值与目标值类型转换 循环与错误处理优化添加循环优雅处理非法输入​ 最终完整代码核心概念总结 编程实现猜数字游戏 我们使用cargo和rust实现一个经典编程练习…

文章目录

  • 编程实现猜数字游戏
    • 游戏规则
    • 创建新项目
      • 默认代码
      • 处理用户输入
      • 代码解析
    • 生成随机数
      • 添加依赖
      • 生成逻辑
    • 比较猜测值与目标值
      • 类型转换
    • 循环与错误处理优化
      • 添加循环
      • 优雅处理非法输入​
    • 最终完整代码
    • 核心概念总结

编程实现猜数字游戏

rust crab

我们使用cargorust实现一个经典编程练习——猜数字游戏,在实践中掌握Rust核心概念:let绑定、match模式匹配、方法、关联函数、外部包(crate)等。

游戏规则

程序生成1-100的随机整数作为目标数字。玩家输入猜测值后,程序提示猜测偏大或偏小。若猜中则显示祝贺信息并退出。

创建新项目

​### 初始化项目

$ cargo new guessing_game
$ cd guessing_game
  • 第一条命令创建项目,第二条进入项目目录

  • 生成的Cargo.toml文件包含项目元信息:

[package]
name = "guessing_game"
version = "0.1.0"
edition = "2024"
[dependencies]  # 依赖项声明区域

默认代码

src/main.rs包含自动生成的"Hello, world!":

fn main() {println!("Hello, world!");}

使用cargo run编译并运行:

$ cargo run
Hello, world!

处理用户输入

use std::io; // 导入I/O库fn main() {println!("猜数字游戏!");println!("请输入你的猜测:");let mut guess = String::new(); // 可变字符串变量io::stdin().read_line(&mut guess) // 读取输入到guess.expect("读取失败"); // 错误处理println!("你猜的是: {}", guess); // 占位符输出
}

代码解析

  • let mut:声明可变变量(默认不可变)

  • String::new():创建空字符串,::表示关联函数

  • &mut guess:可变引用,允许修改字符串内容

  • expect():处理Result类型(成功返回内容,失败崩溃并显示信息)

生成随机数

添加依赖


修改Cargo.toml:

[dependencies]
rand = "0.9.1"  # 指定版本号

Cargo会自动下载依赖(含次级依赖包)

注:这里也可通过cargo add rand来安装依赖。

生成逻辑

use rand::Rng; // 导入随机数特性(trait)let secret_number = rand::thread_rng().gen_range(1..=100);
println!("神秘数字: {}", secret_number); // 测试用
thread_rng():获取线程本地生成器
gen_range(1..=100):生成1-100闭区间随机数

比较猜测值与目标值

use std::cmp::Ordering; // 导入比较枚举match guess.cmp(&secret_number) {Ordering::Less => println!("太小了!"),Ordering::Greater => println!("太大了!"),Ordering::Equal => println!("你赢了!")
}

类型转换

需将字符串猜测值转为整数:

let guess: u32 = guess.trim().parse().expect("请输入数字!"); 
// 类型标注 | 去空格 | 解析 | 错误处理
  • 遮蔽(shadowing)​:复用变量名转换类型

  • 错误处理​:非数字输入导致崩溃(后续优化)

循环与错误处理优化

添加循环

loop {// 输入和比较逻辑}

优雅处理非法输入​

替换expect为模式匹配,避免崩溃:

let guess: u32 = match guess.trim().parse() {Ok(num) => num,       // 解析成功返回数字Err(_) => continue,   // 失败则跳过本轮循环};

​### 胜利时退出
在匹配成功分支添加break:

Ordering::Equal => {println!("你赢了!");break; // 退出循环
}

最终完整代码

use std::cmp::Ordering;
use std::io;
use rand::Rng;fn main() {println!("猜数字游戏!");// rand::thread_rng 在0.9.1版中过期。// let secret_number = rand::thread_rng().gen_range(1..=100);let secret_number = rand::rng().random_range(1..=100);loop {println!("请输入猜测数字:");let mut guess = String::new();io::stdin().read_line(&mut guess).expect("读取失败");let guess: u32 = match guess.trim().parse() {Ok(num) => num,Err(_) => continue,};println!("你猜的是: {}", guess);match guess.cmp(&secret_number) {Ordering::Less => println!("太小了!"),Ordering::Greater => println!("太大了!"),Ordering::Equal => {println!("你赢了!");break;}}}
}

猜数字举例

核心概念总结

概念作用说明示例片段
​​let绑定​​声明变量(默认不可变)let mut guess = String::new()
​​match匹配​​处理枚举分支比较Ordering的三种状态
​​关联函数​​类型命名空间的函数String::new()
​​外部包​​扩展功能(如随机数)rand::rng()
​​错误处理​​Result类型与模式匹配parse()后的Ok/Err处理
​​循环控制​​loop与break结合胜利时退出循环

通过此项目,我们实践了变量声明、模式匹配、错误处理等Rust核心机制。下一步可尝试扩展功能:记录猜测次数、添加难度分级或输入验证增强。


文章转载自:

http://WAri948X.mpwbh.cn
http://U1fOwTFL.mpwbh.cn
http://W5vkkgsu.mpwbh.cn
http://YLJXoUcC.mpwbh.cn
http://WdTWnDZx.mpwbh.cn
http://1jQSc5aB.mpwbh.cn
http://YWiS1GUV.mpwbh.cn
http://G3yyBkya.mpwbh.cn
http://WKGUmHYu.mpwbh.cn
http://W58ePj0x.mpwbh.cn
http://5IiH1BH8.mpwbh.cn
http://hYidW50x.mpwbh.cn
http://8FKj7mnU.mpwbh.cn
http://ZrCz1dEA.mpwbh.cn
http://guH8gJk4.mpwbh.cn
http://i5ELws7f.mpwbh.cn
http://2UpPnvTP.mpwbh.cn
http://8NATj53x.mpwbh.cn
http://Hffk8h6w.mpwbh.cn
http://DnNlDvl6.mpwbh.cn
http://EYgSLfoa.mpwbh.cn
http://4mTOLclW.mpwbh.cn
http://bXjOvYJi.mpwbh.cn
http://r6GMnIgl.mpwbh.cn
http://PCTdq5tg.mpwbh.cn
http://cAZIywBT.mpwbh.cn
http://b7kBhmcv.mpwbh.cn
http://2VKUHMid.mpwbh.cn
http://gx7KLRfz.mpwbh.cn
http://ebtnV3UO.mpwbh.cn
http://www.dtcms.com/wzjs/711771.html

相关文章:

  • 网站开发需要那些人才福州网站建设网站设计网站推广
  • 义乌建设银行交罚款网站购物网站建设得背景
  • 长春网站制作企业怎么做婚庆网站平台
  • 网站怎么改域名免费商标图案设计logo
  • 营销网站更受用户欢迎的原因是鲁班设计工作平台
  • 中国高清adidas网站河北建设工程信息网招标公告唐县
  • 网站开发具体做什么的公司的网站链接找谁做
  • 深圳市网站建设公司设计wordpress页面中添加小工具
  • 营销机构代码怎么填网站优化排名哪家性价比高
  • 网站无icp备案广州市网站搭建制作
  • 腾讯网站开发规范可以上传图片的网站怎么做
  • 网站建设价格对比单杭州软件开发公司网站
  • 哪些公司做企业网站蒙文网站建设的意义
  • 梅州兴宁网站建设培训做网站时已做好了ps怎么倒入
  • 标准物质网站建设模板wordpress 域名设置
  • 天峨县建设局网站腾讯微博做网站外链步骤
  • 网站建设需要用到哪些软件wordpress洋葱
  • 企业做网站的公司有哪些网站备案费用多少
  • 可以做设计兼职的网站有哪些工作一段js代码_让你的wordpress支持简繁转换(转)
  • 网站建设怎么找客源wordpress发邮件接收验证码
  • 做仿站如何修改网站管理权限微信开放平台登陆
  • 广州手机网站建设哪家好易语言做网站登录
  • 网站进不去怎么解决dede网站打不开
  • 性价比最高网站建设价格网页制作视频教程网
  • 可以做外贸的网站小程序制作单位
  • 猪八戒网站建设网站设计和网站建设
  • 郑州做网站wordpress adsense integrator
  • iis7 网站无法显示该页面重庆工装公司
  • 微起点网站怎么设置的wordpress页面显示什么意思
  • 设计做的网站哪些好做个公司网站