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

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]的位置就是文件名

http://www.lryc.cn/news/196624.html

相关文章:

  • 在 CentOS 8.2 上安装 MySQL C/C++ 客户端库 libmysqlclient.so
  • 『C++ - STL』之优先级队列( priority_queue )
  • 简述什么是服务端包含(Server Side Include)?
  • 领英如何注册?2023超全面详细教程
  • Spring Cloud Gateway 使用 Redis 限流使用教程
  • Qt事件系统 day7
  • 微服务拆分的思考
  • DateUtil工具类记录
  • 可信执行环境简介:ARM 的 TrustZone
  • 【音视频流媒体】 3、ffmpeg、ffplay、ffprobe 超详细介绍
  • 解决kong部署自定义插件报 helloworld plugin is enabled but not installed
  • 动态数据源自定义SqlSessionFactoryBean时mybatis plus配置失效
  • 【Qt控件之QDialogButtonBox】概述及使用
  • IPv6知识概述 - ND协议
  • react-redux的connect函数实现
  • Vue3使用Vite创建项目
  • NCV7724DQBR2G车规级半桥电机驱动芯片-专为汽车,工业自动化应用提供完美解决方案
  • NSS [GWCTF 2019]枯燥的抽奖
  • 微信小程序会议OA系统
  • CICD:Circle CI 实现CICD
  • 竞赛 深度学习YOLO安检管制物品识别与检测 - python opencv
  • 【华为OD机试python】斗地主之顺子【2023 B卷|100分】
  • ant design DatePicker禁用之前的时间
  • C语言---预处理详解
  • 数组和对象有什么区别?
  • 顺序表(第二节)实现和解析
  • Hadoop3教程(二十一):MapReduce中的压缩
  • 04、RocketMQ -- 核心基础使用
  • mysql中date/datetime类型自动转go的时间类型time.Time
  • MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)