13.while条件循环语句 (4)

news2024/10/2 14:29:21

        while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。 while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行, 为假就结束循环

         

编写一个用来猜测数值大小的脚本。

        结合使用多分支的if条件测试语句与while条件循环语句,该脚本使用 $RANDOM 变量来调取出一个随机的数值(范围为0~ 32767),然后将这个随机数对1000进行取余操作,在 Bash 中进行算术运算的方式有多种,比如使用 expr 命令、使用 $[ ]$(( )) 等符号。在这里我们使用的是 $(( )) 符号来进行算术运算,再用这个数值与用户通过read命令输入的数值进行比较判断。这个判断语句分为3种情况,分别判断用户输入的数值是等于、大于还是小于使用expr命令取得的数值。

        当while条件循环语句中的条件测试始终为true,因此判断语句 会无限执行下去,直到用户输入的数值等于expr命令取得的数值后,才运行exit 0命令, 终止脚本的执行。

        在脚本中,我们添加了一些交互式的信息,从而使得用户与系统的互动性得以增强。而且每当循环到let TIMES++命令时都会让TIMES变量内的数值加1,用来统计 循环总计执行了多少次。这可以让用户得知在总共猜测了多少次之后,才猜对价格

使用 % 1000 运算符,可以将随机数限制在0到999之间,以便与商品价格的范围相匹配。换句话说,这一操作可以确保生成的随机数在指定的范围内。

[root@localhost ~]# cat number.sh
#!/bin/bash
PRICE=$(( $RANDOM % 1000 )) 
TIMES=0
echo "商品价格为0~999之间,你能猜中吗???"
while true
do
        read -p " 请输入你猜的价格:" INT
        let TIMES++
         if [ $INT -eq $PRICE ] ; then
                echo "恭喜您答对了,实际价格是 $PRICE,总共猜测了 $TIMES次"
                exit
        elif [ $INT -gt $PRICE ] ; then
                echo "太高了!"
        else
                echo "太低了!"
        fi
done

    let 是 Bash 中一个用于执行算术运算的内置命令。它的作用是对变量进行算术运算并更新变量的值。在这个脚本中,let TIMES++ 的作用是将变量 TIMES 的值加1,即记录用户猜测的次数。 

[root@localhost ~]# bash number.sh
商品价格为0~999之间,你能猜中吗???
 请输入你猜的价格:500
太高了!
 请输入你猜的价格:400
太高了!
 请输入你猜的价格:300
太低了!
 请输入你猜的价格:350
太高了!
 请输入你猜的价格:340
太高了!
 请输入你猜的价格:330
太高了!
 请输入你猜的价格:320
太高了!
 请输入你猜的价格:310
太低了!
 请输入你猜的价格:311
太低了!
 请输入你猜的价格:312
太低了!
 请输入你猜的价格:313
太低了!
 请输入你猜的价格:314
太低了!
 请输入你猜的价格:315
太低了!
 请输入你猜的价格:316
太低了!
 请输入你猜的价格:317
恭喜您答对了,实际价格是 317,总共猜测了 15次

当条件为true(真)的时候,while语句会一直循环下去,只有碰到exit才会结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP 地址如何进行动态分配?

由于 IP 地址资源的有限性,大部分用户上网都是使用动态 IP 地址,而不是静态 IP 地址。动态 IP 地址指的是在需要的时候才进行 IP 地址分配的方式,而静态 IP 地址是固定分配一个 IP 地址,每次都用这一个地址。因此,IP 地…

AI PC的引擎 – 英特尔第 14 代处理器Meteor Lake架构分析

英特尔从2023年12月开始在笔记本电脑中发售首款 Meteor Lake 第 14 代 Core Ultra 芯片,开启新的“AI PC”时代。这款芯片采用了全新的架构,将CPU分为四块“瓷砖”(tiles):CPU Tile,SoC Tile,Gr…

Python学习从0到1 day9 Python函数

苦难是花开的伏笔 ——24.1.25 函数 1.定义 函数:是组织好的,可重复使用的,用来实现特定功能的代码段 2.案例 在pycharm中完成一个案例需求:不使用内置函数len(),完成字符串长度的计算 #统计字…

海外云手机三大优势

在全球化潮流下,企业因业务需求对海外手机卡等设备的需求不断攀升,推动了海外云手机业务的蓬勃发展。相较于自行置备手机设备,海外云手机不仅能够降低成本,还具备诸多优势,让我们深入探讨其中的三大黄金优势。 经济实惠…

Vulnhub靶机:FunBox 9

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:FunBox 9(10.0.2.37) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/funb…

NGINX如何实现rtmp推流服务

最近直播大火,直播推流软件遍地开花,那么用NGINX如何进行推流呢?下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流,我们主要从一下几点介绍: 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

Elasticsearch基础篇(八):常用查询以及使用Java Api Client进行检索

ES常用查询以及使用Java Api Client进行检索 1. 检索需求 参照豆瓣阅读的列表页面 需求: 检索词需要在数据库中的题名、作者和摘要字段进行检索并进行高亮标红返回的检索结果需要根据综合、热度最高、最近更新、销量最高、好评最多进行排序分页数量为10&#xf…

vscode 代码格式化很短就换行,以及缩放设置

安装vetur 打开vscode设置settings.json { "editor.tabSize": 2,//缩进单位"vetur.format.defaultFormatter.html": "js-beautify-html","vetur.format.defaultFormatterOptions": {"js-beautify-html": {"wrap_line…

项目测试 手机系统 改串号 写IMEI 改MEID 改手机型号 等信息配置信息 演示视频 和一键新机

项目测试 手机系统 改串号 写IMEI 改MEID 改手机型号 等信息配置信息 演示视频 和配置说明 项目-手机系统支持直接改串号 IMEI MEID 手机型号 等信息配置信息 演示视频 支持 条形码 SN IMEI 1 IMEI 2 MEID 唯一SN 蓝牙地址 wifi地址 mac "一键新机"这个术语通常出现…

视频有点大能做二维码吗?视频转成二维码图片的方法

怎么把一个比较大的视频转二维码图片呢?现在很多人会以二维码为载体来存储视频文件,其他人只需要扫码生成二维码就可以观看视频。有的视频因为时间比较长,尺寸比较大,文件会比较大,那么几十几百m大小的视频如何快速制作…

不学前沿技术与朽木浮草何异 Java 10新特性

不学前沿技术与朽木浮草何异? Java 10新特性 ​ 发布于 2018 年 3 月 20 日,最知名的特性应该是 var 关键字(局部变量类型推断)的引入了,其他还有垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性。 概览(…

Shell脚本------函数与数组

目录 一、函数 1、函数是什么? 2、函数的格式 3、函数的调用方法 ①脚本:查看当前操作系统 ②脚本二:函数备份yum线上源,创建yum本地源和清理缓存安装httpd 4、函数的返回值 5、函数传参 6、函数变量的作用范围 1、实例…

2024年【安全员-B证】考试技巧及安全员-B证操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 安全员-B证考试技巧参考答案及安全员-B证考试试题解析是安全生产模拟考试一点通题库老师及安全员-B证操作证已考过的学员汇总,相对有效帮助安全员-B证操作证考试学员顺利通过考试。 1、【多选题】《建筑施…

Rocky8 顺利安装 Airflow 并解决数据库报错问题

rocky是替代centos的服务器系统,稳定可靠。rocky8会比centos7新,可以支持更多服务软件的安装,免去升级各种库的麻烦,本文运行airflow服务就用rocky8系统。airflow是一个定时任务管理系统,功能强大,目前是ap…

机器学习算法(二)

一、朴素贝叶斯 朴素贝叶斯(Naive Bayes)是基于贝叶斯定理。它测量每个类的概率,每个类的条件概率给出 x 的值。这个算法用于分类问题,得到一个二进制“是 / 非”的结果。看看下面的方程式。 先验概率:即基于统计的概…

python基础学习-03 安装

python3 可应用于多平台包括 Windows、Linux 和 Mac OS X。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。)Win 9x/NT/2000Macintosh (Intel, PPC, 68K)OS/2DOS (多个DOS版本)PalmOSNokia 移动手机Windows CEAcorn/RISC OSBeOSAmigaVMS/OpenVMSQNXVxWorksP…

万物简单AIoT 端云一体实战案例学习 之 空气质量检测系统

学物联网,来万物简单IoT物联网!! 下图是本案的3步导学,每个步骤中实现的功能请参考图中的说明。 1、简介 环境污染、空气污染是人类一直所关心并且讨论的永恒话题,人们对优质的环境和健康的身体非常向往。因此,如果有一种可以检测周围环境的空气质量的设备并且环境数据…

各个阶段直播流程和运营重点

塑型期直播流程与运营重点 成长期直播流程与运营重点 成熟期直播流程与运营重点 小结

每个开发人员都应该知道的6个Nodejs库

Node.js被视为许多Web开发人员的理想运行时环境。它是世界上最流行的编程语言之一,Node.js提供了通过JavaScript库重用代码的能力,但是在项目中选择合适的库可能很困难。 有用的库可以缩短开发时间,并为您的Web应用程序提供几个优点&#xf…

Unity学习之坦克游戏制作(2)游戏场景的制作

文章目录 1. 基础场景的搭建2. 游戏主面板2.1 拼出面板2.2 创建新面板2.3 设置面板复用2.4 退出界面 3. 坦克基类3.1 创建基类脚本3.1.1 基类基本属性3.1.2 抽象开火函数3.1.3 受伤虚函数3.1.4 死亡虚函数 4 玩家——基础移动旋转摄像机跟随4.1 玩家对象脚本4.2 控制坦克移动4.…