Linux centos7 bash编程(循环与条件判断)
在编程训练中,循环结构与条件判断十分重要。
根据条件为真为假确定是否执行循环。
有时,根据条件的真假结果,决定执行哪些语句,这就是分支语句。
为了训练分支语句与循环语句,我们设计一个案例:
求一组数字:两数平方和为另一数平方
符合条件时,有三个数:i和j,其平方和与k的平方相等。
i*i+j*j==k*k
或写作:
如果满足条件,我们将会有一组共三个数字,如果有多组数字符合条件,将遇到一个棘手问题:如何同时存放相关三几个数字,如何存放多组这类数字。这是各类语言要解决的重要课题。
为了存储各类数据,python中设置了基本数据类型及组合数据类型。对于相关的多数据存储问题,首先要考虑的是列表(list)、元组(tuple)、集合(set)和字典(dict)。
对于我们要解决的问题,可以考虑用元组(i,j,k),也可以用列表(k,(i,j)),更可以用字典{k:(i,j)}。
而对于bash中解决这类问题,就不方便了。为了训练运用数组a((i0,j0,k0),(i1,j1,k1),…)
下面结合代码,具体讨论数据的存储。
一、python循环与条件判断
由于符合条件的三个数比较多,我们仅求一定数据范围内的符合条件的一组数字。
1.列表存储结果
ls=[]
for i in range(50,100):
for j in range(50,100):
for k in range(50,100):
if i**2 + j**2 == k**2:
ls.append((k,j,i))
for i in range(len(ls)):
print(ls[i])
2.嵌套列表存储结果
ls=[]
for i in range(50,100):
for j in range(50,100):
for k in range(50,100):
if i**2 + j**2 == k**2:
ls.append((k,(j,i)))
for i in range(len(ls)):
print(ls[i])
3.字典存储结果
dict={}
for i in range(40,99):
for j in range(40,99):
for k in range(40,99):
if i**2+j**2 == k**2:
dict[k]=(i,j)
for key,value in dict.items():
print(key,value)
打印输出时,按k值输出,不存在重复问题。
二、bash循环与条件判断
求一组数,这是一个循环问题:
用什么循环结构,for?while?
循环初始条件、结束条件及循环方式
具备什么条件,完成什么事情;具体什么条件,不做什么事情。
循环离不开条件判断!
不同的条件,将产生不同的处理结果,这就是分支语句。
具体什么条件,不做什么事情。可用continue语句,这是一类中断处理方式。
下面的分析,以for循环为主。
1.选择循环结构
设计i,j,k为循环变量,取值范围1-50,用for循环表示,可以这样写(以i为例):
for i in $(seq 50)
也可以:
for i in {1..50}
或用C语言风格这样写:
for((i=1;i<=50;i++)
下面是循环执行的代码,用do标记开始,用done标记结束。最好各自占用一行,其内的代码要缩进,或按一次Tab键,或按4次空格键
PS:同一脚本文件中,要统一使用缩进格式:用Tab,就一直用;用4个空格,就一直用。不能混用两种格式。有缩进的地方一定要缩进,否则会报错。
2.条件判断与循环
主要代码是
k*k == i*i+j*j
bash支持**和但不支持^。可用i*i或i**
从表达式可以看到:
如果表达式成立,交换一下i j也成立。
如何保证仅有一个K值,而不是两个K值呢?
两种手段:
a.在代码中处理,第一组K值打印输出,第二组相同K值的不输出
b.全部结果打印输出后,去掉重复的K值
为了训练代码处理问题的手段,我们重点讨论输出后处理。
a.输出时处理
不输出第二次出现的K值,就需要对K值计数:
第一次,打印输出;
第二次,不输出
设置计数可用变量count,也可以简写为cnt
如何设计不打印输出呢?
用echo,会多出空行。
用echo打印输出其他内容,又显多余。
如何处理?
这就用到continue语句!
当第二次出现k值时,什么都不做,continue继续下一次循环!
b.输出后处理
用sort进行排序,加-u去掉重复的K值
3.输出格式
在表达式成立时,如何输出ijk值,以什么格式输出?
单独输出i j k,不合适,结果变成一系列数字
把三个数字同时输出在一行?可以,但仍感觉有什么不妥。
比较合适的格式是:
K: (i,j)
k后加不加:都可以;i j谁在前在后,都可以
分析完毕,写一份代码,供参考。
源代码
输出后处理重复K
for((i=1;i<=50;i++))
do
for((j=1;j<=50;j++))
do
for((k=1;k<=50;k++))
do
if [ $((i*i+j*j)) == $((k*k)) ]
then
echo "$k: ($i $j)" >>k.txt
fi
done
done
done
不去重效果
与python去重一样,可用sort -u -t: -k1,1.2nr
cat k.txt |sort -u -t: -k1,1.2nr
小结
对于多数据的存储,python方法较多,这与现代高级语言更注重数据处理有关。而bash注重语法与格式的严谨相关。在学习时,可以多多体会。
相关文章:

Linux centos7 bash编程(循环与条件判断)
在编程训练中,循环结构与条件判断十分重要。 根据条件为真为假确定是否执行循环。 有时,根据条件的真假结果,决定执行哪些语句,这就是分支语句。 为了训练分支语句与循环语句,我们设计一个案例: 求一组…...

设计模式-6--装饰者模式(Decorator Pattern)
一、什么是装饰者模式(Decorator Pattern) 装饰者模式(Decorator Pattern)是一种结构型设计模式,它允许你在不修改现有对象的情况下,动态地将新功能附加到对象上。这种模式通过创建一个包装类,…...

质量属性案例-架构真题(二十一)
试题一 某电子商务公司升级会员与促销管理系统,向用户提交个性化服务,提高用户粘性。在项目建立之初,公司领导人一致认为目标是提升会员管理方式的灵活性,由于当前用户规模不大,用户简单,系统方面不需要做…...

nacos Error to process server push response
nacos2.0.3报错: Error to process server push response 解决办法: 排查项目当中有没有直接或间接依赖reflections: <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId>…...

神经网络NLP基础 循环神经网络 LSTM
用的时候,只关心token的输入,以及hidden state就好了 sequence的length是多少,lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现...

Oracle数据传输加密方法
服务器端“dbhome_1\NETWORK\ADMIN\”sqlnet.ora文件中添加 SQLNET.ENCRYPTION_SERVER requested SQLNET.ENCRYPTION_TYPES_SERVER (RC4_256) 添加后新的链接即刻生效,服务器无需重新启动。 也可以通过Net manager管理工具添加 各个参数含义如下: 是…...

Android列表片段
下面创建第二个片段WorkoutFragment,它包含不同训练项目构成的一个列表,用户可以从这个列表中选择训练项目。 列表视图是只包含一个列表的片段 列表片段是一种专门处理列表的片段,它会自动绑定到一个列表视图,所以不需要另外创建…...

【元宇宙】智能手机万岁
凭借出色的新设备,我们很快就能进人元字宙,想象这样的情景是很趣的。但是,至少到21世纪20年代,元宇宙时代的大多数设备很可能是我们已经在使用的设备。 AR 和 VR 设备不仅面临重大的技术、财务和体验障碍,而且它们在上…...

华为mate60的发布代表着什么?有什么意义?
华为Mate60的发布代表着华为在技术领域的持续突破和创新。该产品预计将引入更强大的处理器、更高分辨率的屏幕、更强大的摄像头等前沿技术,进一步巩固华为在技术领域的领先地位。 此外,华为Mate60的发布还具有重塑品牌形象的意义。在美国制裁下ÿ…...

huggingface下载模型文件(基础入门版)
huggingface是一个网站,类似于github,上面拥有众多开源的模型、数据集等资料,人工智能爱好者可以很方便的上面获取需要的数据,也可以上传训练好的模型,制作的数据集等。本文只介绍下载模型的方法,适合新手入…...

在JS中tramsform与translate区别
在JavaScript中,"transform"和"translate"是用于处理HTML元素的样式属性,它们有以下区别: transform属性: transform属性是一个通用的属性,用于应用一系列的变换效果,包括平移、旋转、…...

ebay测评,物理环境与IP环境:解决平台风控问题的关键
近期eBay平台出现了大量风控问题,导致许多买家账号受到影响。实际上,这主要是由于环境搭建方面存在主要问题。时至2023年,许多人的技术方案仍停留在几年前,要么使用一键新机工具配合国外IP,要么使用指纹浏览器配合国外…...

05-Redis
1、Redis为什么快? 1、纯内存操作 2、单线程可以省去多线程时CPU上下文会切换的时间 3、渐进式ReHash、缓存时间戳 数组需要扩容的时候,他会维护两张hash表,比如第一张的数组长度为6,另一张的数组长度为12,在set和g…...

MSST-NET:用于高光谱和多光谱图像融合的多尺度空间-光谱Transfomer网络
1.网络结构 主要贡献: 提出了一种多尺度空间光谱Transformer网络光谱多头注意力旨在提取光谱特征引入多尺度波段/补丁嵌入来提取多尺度特征自监督训练 痛点:卷积核的感受野有限,基于卷积神经网络CNN的融合方法无法利用特征图中的全局关系…...

代码随想录笔记--二叉树篇
1--递归遍历 1-1--前序遍历 前序遍历:根→左→右; #include <iostream> #include <vector>struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), le…...

JavaScript中包含对象的数组去重
一.数组遍历 function Uniarray(array) {// 接收去重后的数组let resArr [];// 遍历数组for (let i 0; i < array.length; i) {let isFind false;// 检查当前元素是否已存在于结果数组中for (let j 0; j < resArr.length; j) {// 使用严格相等运算符(&am…...

gRPC-GateWay Swagger 实战
上一次我们分享了关于 gRPC-Gateway 快速实战 ,可以查看地址来进行回顾 : 也可以查看关于 gRPC 的历史文章: gRPC介绍 gRPC 客户端调用服务端需要连接池吗? gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I 今天主要是分享关于 gRPC-G…...

【webpack】HMR热更新原理
本文:参考文章 一、HMR是什么,为什么出现 1、出现的原因 之前,应用的加载、更新都是一个页面级别的操作,即使单个代码文件更新,整个页面都要刷新,才能拿到最新的代码同步到浏览器,导致会丢失…...

Ceph构件及组件分析
Ceph存储架构 Ceph 存储集群由几个不同的daemon组成,每个daemon负责Ceph 的一个独特功能并。每个守护进程是彼此独立的。 下面将简要介绍每个Ceph组件的功能: RADOS(Reliable Autonomic Distributed Object Store, RADOS) RADOS…...

第六章:中华民族的抗日战争
1.日本发动灭亡中国的侵略斗争 关键字: 中国抗日战争的起点与全民族抗战阶段 2.中国人民奋起抗击日本侵略者 关键字: 1 国共第二次统一战线初步建立的标志:国民党五届三中全会 2 扭转时局的枢纽,国内和平初步实现:…...

签到系统怎么设计
背景 相信签到系统大家都有接触过,更多的是使用。但是有思考过这种系统是怎么设计的吗?比方说我统计一下每个月中每天的签到情况,怎么设计呢?今天一篇文章告诉你。 首先,我们熟悉的思维是:我设计一个数据…...

危险的套娃:攻击者在 PDF 文件中隐藏恶意Word 文档
据BleepingComputer消息,日本计算机紧急响应小组 (JPCERT) 日前分享了在2023 年 7 月检测到的利用PDF文档的新型攻击——PDF MalDoc攻击,能将恶意 Word 文件嵌入 PDF 来绕过安全检测。 JPCERT采样了一种多格式文件,能被大多数扫描引擎和工具识…...

怎样将几个pdf合并?
在日常工作中,我们经常需要处理大量的PDF文件。有时候,我们需要将多个PDF文件合并成一个文件,以便于快速传输或方便查阅。虽然PDF文件本身不能进行编辑,但是借助专业的PDF编辑软件,我们可以轻松地实现将多个PDF文件合并…...

vr健康管理服务情景化教学弥补现代医学教学中的诸多不足之处
高职高专临床医学院校以培养岗位胜任力为目的,该专业是一门专业性、实践性较强的医学学科,要求培养出来的学生具有较强的临床实践能力,医学生所学的全部知识,都应与实践相结合,解决临床的实际问题,为患者解…...

【业务功能篇92】微服务-springcloud-多线程-异步处理-异步编排-CompletableFutrue
三、CompletableFutrue 一个商品详情页 展示SKU的基本信息 0.5s展示SKU的图片信息 0.6s展示SKU的销售信息 1sspu的销售属性 1s展示规格参数 1.5sspu详情信息 1s 1.ComplatableFuture介绍 Future是Java 5添加的类,用来描述一个异步计算的结果。你可以使用 isDone方…...

CAN FD的一致性测试 助力汽车电子智能化
后起之秀——CAN FD:随着各个行业的快速发展,消费者对汽车电子智能化的诉求越来越强烈,这使得整车厂将越来越多的电子控制系统加入到了汽车控制中,且在传统汽车、新能源汽车、ADAS和自动驾驶等汽车领域中也无不催生着更高的需求&a…...

微信短链跳转到小程序指定页面调试
首先说下背景:后端给了短链地址,但是无法跳转到指定页面。总是在小程序首页。指定的页面我们是h5页面。排查步骤如下: 1、通过快速URL Scheme 编译。上部普通编译 下拉找到此选项。 、 2、按照小程序的要求的URL Scheme输入。另外后端给的…...

机器学习——聚类算法一
机器学习——聚类算法一 文章目录 前言一、基于numpy实现聚类二、K-Means聚类2.1. 原理2.2. 代码实现2.3. 局限性 三、层次聚类3.1. 原理3.2. 代码实现 四、DBSCAN算法4.1. 原理4.2. 代码实现 五、区别与相同点1. 区别:2. 相同点: 总结 前言 在机器学习…...

【2023研电赛】安谋科技企业命题三等奖作品: 短临天气预报AI云图分析系统
本文为2023年第十八届中国研究生电子设计竞赛安谋科技企业命题三等奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来…...

The Sandbox 与韩国仁川市合作,打造身临其境的城市体验内容
简要概括 ● The Sandbox 与仁川市联手展示城市魅力,打造创新形象。 ● 本次合作包含多种多样的活动,如 NFT 捐赠活动和针对元宇宙创作者的培训计划。 我们非常高兴地宣布与仁川市合作,共同打造身临其境的城市体验。 双方合作的目的是在国…...