Python武器库开发-基础篇(二)
基础篇(二)
if 语句
编程时经常需要检查一系列条件,并据此决定采取什么措施。在Python中,if 语句让你能够检查程序的当前状态,并据此采取相应的措施
下面是一个简短的示例,演示了如何使用if 语句来正确地处理特殊情形。假设你有一个汽车列表,并想将其中每辆汽车的名称打印出来。对于大多数汽车,都应以首字母大写的方式打印其名称,但对于汽车名’bmw’ ,应以全大写的方式打印。下面的代码遍历一个列表,并以首字母大写的方式打印其中的汽车名,但对于汽车名’bmw’ ,以全大写的方式打印:
每条if语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。Python根据条件测试的值为True 还是False 来决定是否执行if 语句中的代码。如果条件测试的值为True ,Python就执行紧跟在if 语句后面的代码;如果为False ,Python就忽略这些代码
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())
这个示例中的循环首先检查当前的汽车名是否是’bmw’ 。如果是,就以全大写的方式打印它;否则就以首字母大写的方式打印:
最简单的 if 语句只有一个测试和一个操作:
在第1行中,可包含任何条件测试,而在紧跟在测试后面的缩进代码块中,可执行任何操作。如果条件测试的结果为True ,Python就会执行紧跟在if 语句后面的代码;否则Python将忽略这些代码。
假设有一个表示某人年龄的变量,而你想知道这个人是否够投票的年龄,可使用如下代码:
age = 19
if age >= 18:print("You are old enough to vote!")
Python检查变量age 的值是否大于或等于18;答案是肯定的,因此Python执行处缩进的print 语句:
if-else 语句
经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的 if-else 语句。if-else 语句块类似于简单的if 语句,但其中的else 语句让你能够指定条件测试未通过时要执行的操作。
下面的代码在一个人够投票的年龄时显示与前面相同的消息,同时在这个人不够投票的年龄时也显示一条消息:
age = 17
if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")
else:print("Sorry, you are too young to vote.")print("Please register to vote as soon as you turn 18!")
如果条件测试通过了,就执行第一个缩进的print 语句块;如果测试结果为False ,就执行else 代码块。这次age 小于18,条件测试未通过,因此执行else 代码块中的代码:
if-elif-else 语句
经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else 结构。Python只执行if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
在现实世界中,很多情况下需要考虑的情形都超过两个。例如,来看一个根据年龄段收费的游乐场:
- 4岁以下免费;
- 4~18岁收费5美元;
- 18岁(含)以上收费10美元。
如果只使用一条if 语句,如何确定门票价格呢?下面的代码确定一个人所属的年龄段,并打印一条包含门票价格的消息:
age = 12if age < 4:print("Your admission cost is $0.")
elif age < 18:print("Your admission cost is $5.")
else:print("Your admission cost is $10.")
if 测试检查一个人是否不满4岁,如果是这样,Python就打印一条合适的消息,并跳过余下的测试。elif 处的代码行其实是另一个if 测试,它仅在前面的测试未通过时才会运行。在这里,我们知道这个人不小于4岁,因为第一个测试未通过。如果这个人未满18岁,Python将打印相应的消息,并跳过else 代码块。如果if 测试和elif 测试都未通过,Python将运行else 处代码块中的代码。
在这个示例中,if处测试的结果为False ,因此不执行其代码块。然而,第二个测试的结果为True (12小于18),因此将执行其代码块。输出为一个句子,向用户指出了门票价格:
只要年龄超过17岁,前两个测试就都不能通过。在这种情况下,将执行else 代码块,指出门票价格为10美元。
为让代码更简洁,可不在if-elif-else 代码块中打印门票价格,而只在其中设置门票价格,并在它后面添加一条简单的print 语句:
age = 12if age < 4:price = 0
elif age < 18:price = 5
else:price = 10print("Your admission cost is $" + str(price) + ".")
根据人的年龄设置变量price 的值。在if-elif-else 结构中设置price 的值后,一条未缩进的print 语句会根据这个变量的值打印一条消息,指出门票的价格。
这些代码的输出与前一个示例相同,但if-elif-else 结构的作用更小,它只确定门票价格,而不是在确定门票价格的同时打印一条消息。除效率更高外,这些修订后的代码还更容易修改:要调整输出消息的内容,只需修改一条而不是三条print 语句。
for 循环
你经常需要遍历列表的所有元素,对每个元素执行相同的操作。例如,在游戏中,可能需要将每个界面元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执行相同的统计运算;在网站中,可能需要显示文章列表中的每个标题。需要对列表中的每个元素都执行相同的操作时,可使用Python中的for 循环。
假设我们有一个魔术师名单,需要将其中每个魔术师的名字都打印出来。为此,我们可以分别获取名单中的每个名字,但这种做法会导致多个问题。例如,如果名单很长,将包含大量重复的代码。另外,每当名单的长度发生变化时,都必须修改代码。通过使用for 循环,可让Python去处理这些问题。
下面使用for 循环来打印魔术师名单中的所有名字:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:print(magician)
首先,我们像定义了一个列表magicians。接下来,我们定义了一个for 循环;这行代码让Python从列表magicians 中取出一个名字,并将其存储在变量magician 中。最后,我们让Python打印前面存储到变量magician 中的名字。这样,对于列表中的每个名字,Python都将重复执行代码行。你可以这样解读这些代码:对于列表magicians 中的每位魔术师,都将其名字打印出来。输出很简单,就是列表中所有的姓名:
while 循环
for 循环用于针对集合中的每个元素都一个代码块,而while 循环不断地运行,直到指定的条件不满足为止
你可以使用while 循环来数数,例如,下面的while 循环从1数到5:
current_number = 1
while current_number <= 5:print(current_number)current_number += 1
在第1行,我们将current_number 设置为1,从而指定从1开始数。接下来的while 循环被设置成这样:只要current_number 小于或等于5,就接着运行这个循环。循环中的代码打印current_number 的值,再使用代码current_number += 1 (代码current_number = current_number + 1 的简写)将其值加1。
只要满足条件current_number <= 5 ,Python就接着运行这个循环。由于1小于5,因此Python打印1 ,并将current_number 加1,使其为2 ;由于2小于5,因此Python打印2 ,并将current_number 加1 ,使其为3 ,以此类推。一旦current_number 大于5,循环将停止,整个程序也将到此结束:
使用 continue 语句 退出循环
for letter in 'Python': if letter == 'h':continueprint('当前字母 :', letter)
程序的输出结果如下:
var = 10
while var > 0: var = var-1if var == 5:continueprint('当前变量值 :', var)
程序的输出结果如下:
使用break 退出循环
要立即退出while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break 语句。break 语句用于控制程序流程,可使用它来控制哪些代码行将执行,哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。
例如,来看一个让用户指出他到过哪些地方的程序。在这个程序中,我们可以在用户输入’quit’ 后使用break 语句立即退出while 循环:
prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.) "while True:city = input(prompt)if city == 'quit':breakelse:print("I'd love to go to " + city.title() + "!")
pass 语句
Python pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句
for letter in 'Python':if letter == 'h':passprint('这是 pass 块')print('当前字母 :', letter)
以上实例执行结果:
字典
来看一个游戏,其中包含一些外星人,这些外星人的颜色和点数各不相同。下面是一个简单的字典,存储了有关特定外星人的信息:
alien_0 = {'color': 'green', 'points': 5}print(alien_0['color'])
print(alien_0['points'])
字典alien_0 存储了外星人的颜色和点数。使用两条print 语句来访问并打印这些信息,如下所示:
运算符
算术运算符
以下假设变量: a=10,b=20:
以下实例演示了Python所有算术运算符的操作:
a = 21
b = 10
c = 0c = a + b
print("1 - c 的值为:", c)c = a - b
print("2 - c 的值为:", c)c = a * b
print("3 - c 的值为:", c)c = a / b
print("4 - c 的值为:", c)c = a % b
print("5 - c 的值为:", c)# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b
print("6 - c 的值为:", c)a = 10
b = 5
c = a//b
print("7 - c 的值为:", c)
以上实例输出结果:
比较运算符
以下假设变量a为10,变量b为20:
赋值运算符
以下假设变量a为10,变量b为20:
位运算符
逻辑运算符
Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:
成员运算符
除了以上的一些运算符之外,Python还支持成员运算符
身份运算符
身份运算符用于比较两个对象的存储单元
运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
命令行参数
在Python中,python提供了我们一个库sys,可以让我们去执行需要的命令行参数
我们将下列代码保存为a.py
import sys
for arg in sys.argv:print(arg)
然后程序脚本就能根据相应脚本的命令行输入,去执行相应的命令行参数
这里我们需要注意的是sys.srgv[0]的位置就是文件名
相关文章:

Python武器库开发-基础篇(二)
基础篇(二) if 语句 编程时经常需要检查一系列条件,并据此决定采取什么措施。在Python中,if 语句让你能够检查程序的当前状态,并据此采取相应的措施 下面是一个简短的示例,演示了如何使用if 语句来正确地处理特殊情形。假设你有…...
在 CentOS 8.2 上安装 MySQL C/C++ 客户端库 libmysqlclient.so
添加 MySQL 官方 Yum 存储库: sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm 安装 MySQL C/C 客户端库: sudo dnf install mysql-devel 这将自动安装所需的依赖项,并将 libmysqlclient 库及其头…...

『C++ - STL』之优先级队列( priority_queue )
文章目录 前言优先级队列的结构优先级队列的模拟实现仿函数 最终代码 前言 什么是优先级队列,从该名中可以知道他一定有队列的一定属性,即先入先出(LILO),而这里的优先级则可以判断出它的另一个特点就是可以按照一定的条件将符合该条件的先进…...
简述什么是服务端包含(Server Side Include)?
Server-side include(服务器端包括)是浏览器向服务器请求您的文档时并入您的文档的一个文件。 当访问者浏览器请求含有 include(包括)指令的文档时,服务器处理 include(包括)指令并创建新的文档,在新文档中 include(包括)指令被所包括的文件内容取代。然后服务器将此…...

领英如何注册?2023超全面详细教程
领英是一家面向商业用户的全球最大的职业社交网站,据统计,Linkedln用户每月与网页的交互次数超过10亿次。对于跨境人来说,他更是作为一个开发客户、广告营销的工具,被称为跨境的“风口”。 一、领英被封原因 1、IP、设备问题 1&…...

Spring Cloud Gateway 使用 Redis 限流使用教程
从本文开始,笔者将总结 spring cloud 相关内容的教程 版本选择 为了适应 java8,笔者选择了下面的版本,后续会出 java17的以SpringBoot3.0.X为主的教程 SpringBoot 版本 2.6.5 SpringCloud 版本 2021.0.1 SpringCloudAlibaba 版本 2021.0.1.…...

Qt事件系统 day7
Qt事件系统 day7 事件系统 在Qt中,事件是派生自抽象QEvent类的对象,它表示应用程序内发生的事情或应用程序需要知道的外部活动的结果。事件可以由QObject子类的任何实例接收和处理,但它们与小部件尤其相关。Qt程序需要在main()函数创建一个…...

微服务拆分的思考
一、前言 前面几篇文章介绍了微服务核心的两个组件:注册中心和网关,今天我们来思考一下微服务如何拆分,微服务拆分难度在于粒度和层次,粒度太大拆分的意义不大,粒度太小开发、调试、运维会有很多坑。 二、微服务划分…...
DateUtil工具类记录
为支持日常工作需要,记录所用到的一些关于时间的工具类方法。随时进行补充。 /*** Description:获取两个日期之间的天数差* Author:hanyq* Date:2023/9/19 11:23*/public static int getDateDifference(Date startDate,Date endDate){int days 0;try {Calendar st…...

可信执行环境简介:ARM 的 TrustZone
目录 可信执行环境安全世界与普通世界 - 上下文切换机制ARMv7 中的异常处理ARMv8 中的异常处理 信任区商业实施TrustZone 本身的漏洞高通Trustonic 信任区强化的弱点结论声明 可信执行环境 具有信任区的 ARM 处理器实现了架构安全性每个物理处理器内核提供两个虚拟的扩展 核心…...

【音视频流媒体】 3、ffmpeg、ffplay、ffprobe 超详细介绍
文章目录 一、ffmpeg1.1 安装1.2 基本参数 二、ffprobe2.1 查编码格式2.2 查视频时长 五、视频转流5.1 MP4转H2645.2 H264转MP45.3 AVI转MP45.4 MP4转H265 六、视频文件6.1 播放6.2 filter 过滤器6.2.1 crop 6.3 视频截取6.4 视频拼接6.5 获取分辨率 七、视频和图7.1 视频抽帧7…...
解决kong部署自定义插件报 helloworld plugin is enabled but not installed
背景 我使用的是docker环境部署,使用的是自定义挂载plugins路径 -e "KONG_LUA_PACKAGE_PATH/plugins/?.lua" \ -v "/plugins:/plugins" \ -e "KONG_PLUGINSbundled,helloworld" \但是当我只需docker run的时候就报错 [error] 1#0:…...
动态数据源自定义SqlSessionFactoryBean时mybatis plus配置失效
环境: 动态数据源spring-boot 2.7.15mybatis-plus 3.5.2 yaml配置: spring:datasource:db100:username: xxxpassword: xxxjdbc-url: jdbc:kingbase8://xxx.xxx.xxx.xxx:54321/100driver-class-name: com.kingbase8.Driver# url: jdbc:postgresql://xxx…...

【Qt控件之QDialogButtonBox】概述及使用
概述 QDialogButtonBox类是一个小部件,它以适合当前小部件样式的布局呈现按钮。 对话框和消息框通常以符合该台界面指南的布局呈现按钮。不同的平台会有不同的对话框布局。QDialogButtonBox允许发人员向其添加按钮,并将自使用用户的桌面环境所适合的布局…...

IPv6知识概述 - ND协议
IPv6知识概述 - ND协议 参考文章:https://blog.csdn.net/Gina_wj/article/details/106708770 IPv6基础篇(四):邻居发现协议NDP ND协议功能概述 ND(Neighbor Discovery,邻居发现)协议是IPv6的…...
react-redux的connect函数实现
react-redux对store订阅的实现原理: storeContext.js import { createContext } from "react";export const StoreContext createContext() connect.js import React, { PureComponent } from react // import store from ../../store; import {Stor…...

Vue3使用Vite创建项目
node版本:node -v v18.16.0 npm版本: npm -v 9.5.1 Vite Vite:是一种新型前端构建工具,能够显著提升前端开发体验 脚手架,创建Vue项目,替代 Vue-cli 基于Vite创建vue项目: 1.npm create vitelatest 2.完…...

NCV7724DQBR2G车规级半桥电机驱动芯片-专为汽车,工业自动化应用提供完美解决方案
车规级半桥电机驱动芯片是一种用于驱动直流电机的芯片,常用于电动汽车、电动自行车等领域。它可以控制电机的转速和方向,并且具有过流保护、过温保护等功能,可以保证电机的安全运行。 NCV7724DQBR2G是一款车规级八通道半桥驱动器,…...

NSS [GWCTF 2019]枯燥的抽奖
NSS [GWCTF 2019]枯燥的抽奖 开题让我猜字符串,这种题目肯定不是猜,应该是类似于php伪随机数。 dirsearch扫他一下。 访问/check.php得到源码。 分析一下代码。 通过PHP伪随机数从字符库$str_long1中选取20个字符组成字符串,返回给我们前十…...

微信小程序会议OA系统
Flex弹性布局 Flex弹性布局是一种 CSS3 的布局模式,也叫Flexbox。它可以让容器中的元素按一定比例自动分配空间,使得它们在不同宽度、高度等情况下仍能保持整齐和密集不间隙地排列。 在使用Flexbox弹性布局时,首先需要创建一个容器和若干个…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...