Python入门教程+项目实战-7.4节: 程序实战-计算次大值

目录

7.2.1 计算四个中的次大值

7.2.2 使用循环计算次小值

7.2.3 系统学习python


7.2.1 计算四个中的次大值

假设有四个整型变量,该怎么计算四个中的次大值?

初学者解出这道题并不困难,但是将代码写得简洁优雅却是一个不小的挑战。

直接通过if来逐一比较,这样的思路显然是错的,最终写出的只是一坨又长又臭的代码。比较好的思路是先计算三个变量中的最大值以及中值,将其大小关系确定下来:

然后将第四个变量分别与最大值,中值进行比较,如果比三个中的最大值要大,那么次大值肯定就是三个中的最大值,如果比最大值小但比中值要大,那么次大值肯定就是第四个值。否则次大值一定是三个中的中值,为什么呢?因为次大值一定不是三个中的最小值,所以只能是三个中的中值。

先将三个变量的大小关系确定下来,这样才方便进行比较。

代码实例:

Python

# __author__ = 薯条老师
import random
x = random.randint(0, 1000)
y = random.randint(0, 1000)
z = random.randint(0, 1000)
k = random.randint(0, 1000)

# 计算三个中的最大值
max_ = x if x > y else y
if z > max_:
    max_ = z

# 计算三个中的最小值
min_ = x if x < y else y
if z < min_:
    min_ = z

# 将三个变量相加再减去最大值和最小值,结果一定是中值
median = x+y+z-max_-min_

# 假设三个中的中值为次大值
max_k2 = median

if k > max_:
    # 比三个中的最大值max_要大,次大值就是max_
    max_k2 = max_
elif k > median:
    # 比max_小但比median大,那么次大值就是k
    max_k2 = k

print("次大值:{}".format(max_k2))

7.2.3 使用循环计算次小值

在for循环中计算最小值的逻辑很简单,如果需要计算出次小值,又该怎么实现呢?

许多初学者将这个问题想得过于复杂,要学会将复杂的问题简化处理,这样才能更好地理解事物的本质。

可将问题简化为循环只执行两次:如果第一次遍历出来的值比最小值要小,那么就更新为最小值。如果第二次遍历出来的比最小值要小,那么此时的次小值就一定是上一次的最小值。

在实现的过程中,还需注意当遍历出来的值大于最小值且小于次小值的情况,以及对最小值和次小值初始化时,二者刚好为最小值的特殊情况。

代码实例: 

Python

# __author__ = 薯条老师
import random

# 通过列表推导式来生成一个包含10个随机整数的列表
numbers = [random.randint(0,  100) for _ in range(10)]

# min_表示最小值,min_k2表示次小值
min_, min_k2 = numbers[0], numbers[1]

for number in numbers[1:]:
    if nummber < min_:
        # 如果遍历出来的值比min_要小,那么次小值一定是上次的最小值
        min_k2 = min_
        min_ = number
    elif min_ < number < min_k2:
        # 如果遍历出来的比min_要大,但比次小值小,那么次小值就为当前遍历出来的值
        min_k2 = _
    elif min_ == min_k2:
        # 如果min_与min_k2刚好为最小值,且相等,就将次小值更新为当前值
        min_k2 = number
else:
    print("次小值:{}".format(min_k2))

7.2.3 系统学习python

 薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

aspnet016计算机组成原理精品课程shfw程序

2网站项目范围 计算机组成原理精品课程系统从两种用户角度进行功能划分。 1、学生部分&#xff1a; 1.1&#xff1a;新闻查看&#xff1b; 1.2&#xff1a;课程公告查看&#xff1b; 1.3&#xff1a;用户注册&#xff1b; 1.4&#xff1a;在线留言&#xff1b; 1.5&#xf…

Spring Boot 配置文件配置自动提示 Configuration Processor

效果 在使用Idea等开发工具时&#xff0c;配置文件中输入前缀就有对应的补全提示&#xff0c;使开发者可以很方便配置相应属性&#xff0c;效果截图如下&#xff1a; 元数据说明 这些提示来自于 spring 自动配置规范中的源数据文件 spring-configuration-metadata.json 和 ad…

百度储瑞松谈智能驾驶:极个别车厂才能做全栈自研

百度集团副总裁、智能汽车事业部总经理储瑞松在百人会论坛表示&#xff0c;汽车智能化系统不同于车企所熟悉的以金属件为主的车辆其他部分的系统&#xff0c;是一个以硬件为载体、由算法软件驱动的大规模动态系统&#xff0c;它的复杂性比起以金属件为主的系统是指数级增长的。…

【环境与工具】IDE配置——vscode配置

配置vscode的 Python , C 的编译环境 2. Python 2.1 Python解释器 2.1.1 安装python环境 2.1.2 创建vscode-python文件夹 裸配置 如图&#xff0c;与在命令行运行无区别 2.1.2 安装vscode-python插件 2.1.3 code插件运行.py 添加配置文件 program 设置启动文件 "progr…

多线程进阶学习12------ConcurrentHashMap详解

JDK 7 HashMap 并发死链 注意&#xff1a;要在 JDK 7 下运行&#xff0c;否则扩容机制和 hash 的计算方法都变了 import java.io.*; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.StringTokenizer; import java.util.concurrent.*; import java.…

AR”将会成为“更加日常化的移动设备应用的一部分”吗

目录 1&#xff1a;AR是什么 2&#xff1a;AR给人类带来的贡献 3&#xff1a;人们在生活中可以遇到许多 AR 技术应用 4&#xff1a;AR 技术的未来发展的趋势&#xff1a; 大学主攻VR&#xff0c;从大一就对VR的知识&#xff0c;设备&#xff0c;已经所涉及的知识伴随我的整…

AI工具(ChatGPT)常用指令,持续更新...

要国内使用AI工具&#xff0c;关注&#xff1a;码视野&#xff0c;回复&#xff1a;1002使用VensiGPT时&#xff0c;当你给的指令越精准&#xff0c;它回复就会越完美&#xff0c;例如&#xff0c;如果你要请它协助撰写文案&#xff0c;如果没有给与指定情景与目标&#xff0c;…

作为大学生,你还不会搭建chatGPT微应用吗?

目录 引言ChatGPT是什么&#xff1f;背景&#xff1a;ChatGPT敢为人先&#xff0c;打破全球僵局示例演示&#xff1a;基于ChatGPT微应用实现的条件及步骤&#xff08;1&#xff09;整体框架&#xff08;2&#xff09;搭建前的准备工作&#xff08;3&#xff09;实际搭建步骤&a…

文件或目录损坏怎么办?4个实用方法!

案例&#xff1a;文件或目录损坏怎么恢复&#xff1f; 【有谁知道为什么文件会突然无法打开且显示损坏了呀&#xff1f;我有一个很重要的文件无法打开了&#xff0c;之前从来没有遇到过这样的问题&#xff0c;这让我很无措&#xff0c;请大家帮我想想办法吧&#xff01;】 我…

ThreeJS-聚光等衰减(二十一)

聚光灯可以联系到现实中的手电筒 衰减分为&#xff1a;距离衰减和边缘衰减 .decay : Float&#xff08;控制的是灯光自身的亮度&#xff09; The amount the light dims along the distance of the light. Default is 2. In context of physically-correct rendering the defa…

pip lanms-neo报错问题

pip lanms-neo报错问题 安装Polygon3的时候&#xff0c;就遇到需要Microsoft Visual C 14.0的问题&#xff0c;以为通过本地whl安装&#xff0c;就能避免。结果&#xff0c;lanms-neo这个库&#xff0c;网上还不好找whl文件&#xff0c;找到的都是csdn里面的付费下载&#xff…

【Java8最优解】P1478 陶陶摘苹果(升级版)

陶陶摘苹果&#xff08;升级版&#xff09; 题目描述 又是一年秋季时&#xff0c;陶陶家的苹果树结了 nnn 个果子。陶陶又跑去摘苹果&#xff0c;这次他有一个 aaa 公分的椅子。当他手够不着时&#xff0c;他会站到椅子上再试试。 这次与 NOIp2005 普及组第一题不同的是&…

HotSpot笔记——共享库操作

共享库操作前言MakefileHotspot的Makefile如何定义需要共享库使用编译选项使用链接器选项dlopendlsym前言 jvm启动时&#xff0c;libjli.so、libjvm.so、libjava.so这些共享库的加载操作&#xff0c;都是c语言的&#xff0c;我们记录一下这些操作函数。 Makefile 以下是一个…

python学习笔记2

使用链接&#xff1a; Python 3 basics - GeeksforGeeks 对应的英文是&#xff1a; 这里联想一下Redis的数据类型: string list set hash zset 列表 有一个细节&#xff0c;可以看到下面的输出里面也带了中括号&#xff1a; 字典 第一行定义的时候是中括号&#xff0c;因为…

文章八:YOLOv5车牌识别系统的Web应用与API开发

在本篇文章中&#xff0c;我们将探讨如何使用YOLOv5车牌识别系统开发一个Web应用&#xff0c;以及如何创建一个车牌识别API供其他开发者使用。我们将介绍Flask框架的基本概念&#xff0c;并实现一个简单的车牌识别Web应用和API。 车牌识别视频Flask框架介绍 Flask是一个轻量级的…

vue-cropper 拖动图片和截图框

现象 开发遇到vue--cropper不能拖动图片和截图框 解决方法 can-move-box设置为true&#xff0c;表示可以拖动截图框 can-move设置为true&#xff0c;表示可以拖动图片 *注意&#xff1a; 我外层套了一个el-col, el-col的宽高一定要大于截图框的宽高&#xff0c;否则移动不了…

网络安全工程师做什么?

​ 网络安全很复杂。数字化转型、远程工作和不断变化的威胁形势需要不同的工具和不同的技能组合。 系统必须到位以保护端点、身份和无边界网络边界。负责处理这种复杂安全基础设施的工作角色是网络安全工程师。 简而言之&#xff0c;网络安全工程师是负责设计和实施组织安全系…

ELK、ELFK企业级日志分析系统

目录 一、ELK简介 1、什么是ELK 2、ELK工作原理及过程​编辑 3、ELK相关名词介绍 ①Elasticsearch介绍 ②Logstash介绍 ③Kibana介绍 ④Fluentd介绍 ⑤Filebeat介绍 二、ELK部署 1、实验环境 2、安装elasticsearch 3、安装logstash ​编辑4、安装kiabana ​编辑…

网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案

一个社区最重要的就是交流氛围与审查违规&#xff0c;而这两者都少不了对于敏感词进行过滤的自动维护措施。基于这样的措施&#xff0c;我们才能基本保证用户在使用社区的过程中&#xff0c;不至于被敏感违规词汇包围&#xff0c;才能够正常的进行发布帖子和评论&#xff0c;享…

unity3d:asset store上C#代码热重载插件,不需要重运行,重新加载更新后函数

C#热重载插件地址 https://assetstore.unity.com/packages/tools/utilities/hot-reload-edit-code-without-compiling-250972?clickref1011lwHg8abv&utm_sourcepartnerize&utm_mediumaffiliate&utm_campaignunity_affiliate#description 打开热重装有两种方法 …