首页 > Python资料 博客日记
初始Python篇(2)——逻辑控制、序列
2024-10-19 17:00:04Python资料围观35次
找往期文章包括但不限于本期文章中不懂的知识点:
个人主页:我要学编程(ಥ_ಥ)-CSDN博客
所属专栏: Python
目录
编程语言共有的程序结构结构:顺序结构、分支结构、循环结构。
顺序结构
概念:按照程序语句的自然顺序,从上到下,依次执行每条语句。
选择结构
选择结构也称为分支结构,是按照条件的不同,选择执行不同的代码块。
选择结构主要是靠 if-else 来实现的。例如,输入一个数字,判断是奇数,还是偶数。
if - else 的语法结构:
if 条件语句:
代码块
# 这里的条件语句的结果只能是True或False
这里就是根据我们输入的是奇数,还是偶数,来执行不同的代码块。
注意:
1、input 函数返回的是一个字符串,因此得用 eval 函数来去掉 引号。
2、在Python中 if-else 并不是和C语言、Java那样,需要用括号将判断条件括起来,而是直接写即可,并且后面要跟上一个冒号,表示条件结束。
3、同样其代码块也不是通过花括号去括起来,而是通过缩进来表明这个代码是否是条件语句里面的,如果有缩进,则证明是;否则,不是。
4、Python 和 C语言一样,0可以表示False,非0可以表示True。
下面就是Python 与 C语言、Java不同的地方了。
在C语言或Java中,如果有多重判断条件,我们是 if - else if - else ,但是在Python中,else if 被简写为 elif 。
上面程序的执行逻辑:和顺序结构一样,从上往下判断条件语句是否成立。如果成立,就选择其中一个执行,否则就选择最后一个语句执行。
当然,Python当中也是存在 if-else 的嵌套。
虽然代码可以嵌套,但是也是有层数限制的(不是强制),最好不要超过三层。
下面我们就来看一下缩进不符合要求的代码。
如果当条件语句中有多个语句时,可以使用 and 或者 or 这样的逻辑运算符来连接。
上面都是大部分情况下使用的条件判断语句,但是还有一些情况下,不适合使用 if-else 语句,因为会造成大量的 if-else 嵌套,不利于我们阅读。因此在Python3.11中就新增了一个模式匹配的语法。类似与C语言和Java中的switch语句。
模式匹配就是通过判断 match 后面跟着的变量 和 case 后面的哪个是相匹配,从而来执行相应的代码块。
循环结构
Python当中的循环结构有两种循环结构:遍历循环-for ,无限循环-while。
注意:Python当中是没有 do-while循环的。
遍历循环-for
语法格式:
# 第一种
for 循环变量 in 遍历对象:
代码块
# 第二种
for 循环变量 in 循环对象
代码块
else: # 这个else只有在循环正常执行完毕之后,才会去执行的
代码块
# 循环变量是我们自己定义的
# 遍历对象一般是序列。例如,字符串、元组等(后面会学)
我们可以来遍历一个字符串并输出。
我们还可以和在C语言、Java中那样去进行范围遍历。
这里我们使用的是Python的内置函数:range。其可以实现范围遍历,但要注意的是:编程中,基本上范围都是前闭后开的状态,[1, 10)
接下来,我们学习第二种for循环的方式。
上面的代码中遇到了break,提前结束了循环,这就叫非正常结束循环。只有当循环变量全部遍历完成之后结束的循环,才叫正常结束循环。
break 和 continue
上面的代码中,我们是用了Python中的保留字:break,和其一样,经常与循环语句一起搭配使用的,还有一个是continue。
break的作用是 提前结束循环;continue的作用是跳过本次循环后面的部分,但是还是会继续执行循环。下面用代码来演示:
无限循环-while
语法格式:
# 第一种方式:
while 条件判断:
代码块
# 第二种方式:
while 条件判断
代码块
else:
代码块
# 代码块中要包含能够影响改变条件判断真假的语句
# 如果没有的话,就很容易写出死循环的代码
# 一个完美的循环,要有四个条件:
# 1、初始化变量
# 2、条件判断
# 3、改变变量
# 4、循环做的事情(这个不会导致死循环)
# 这里的变量都是指的同一个变量
我们还是用代码来演示:
注意:Python中没有 i++ 这样的自增写法。
第二种while循环,和我们前面学习的第二种for循环是一样的,只有当循环正常结束时,才能够执行else语句。
关于循环练习——打印图形,如果有小伙伴感兴趣的话,可以去看下面的文章,详细地介绍了如果打印,以及怎么打印图形:随心所欲打印图形
pass空语句
pass是Python中的保留字,在语法结构中只起到占位符作用,使语法结构完整,不报错。一般可用在if、for、while、函数的定义、类的定义中。
猜数字小游戏
要求:利用程序随机生成一个1-100之间数字,然后让用户去猜测,根据猜测的结果,显示不同的结果,直至猜对为止。
如果有小伙伴想详细了解的话,可以去看这篇博客(虽然代码是C语言,但是主要是了解思路):利用C语言的分支循环少量的函数知识写一个猜数字的小游戏_c语言循环部分小游戏-CSDN博客
序列
序列是一个用于存储多个值的连续空间(类似于C语言和Java中的数组),每个值都对应一个整数的编号,称为索引(类似数组的下标)。但是数组中的下标是从0开始到数组长度-1结束的(正向递增),而索引从 -1 到 -数组长度的反向递减的情况。
我们前面学习的字符串就是由字符组成的序列。现在我们可以利用不同的索引来访问字符串了。
字符串只是序列的一种,序列还有其他的一些组合数据类型,后面再学习。
序列相关的操作
切片操作
对于是序列类型的对象(例如,字符串),我们都可以使用切片操作来访问其中的序列元素。
我们前面是访问一个一个的元素,现在我们要来访问一个范围内的元素,就可以使用切片操作。
# 切片操作
str = 'HelloWorld'
s1 = str[0:5:2] # 从0开始,到4结束,步长为2
print(s1) # 结果为 Hlo
还可以将开始位置、步长、结束位置都进行省略。
# 省略开始位置
str = 'HelloWorld'
print(str[:5:2]) # 默认从0开始,到4结束,步长为2
# 省略步长
str = 'HelloWorld'
print(str[:5:]) # 默认从0开始,到4结束,默认步长为1
# 省略结束位置
str = 'HelloWorld'
print(str[::]) # 默认从0开始,默认到 len()-1 结束,默认步长为1
str = 'HelloWorld'
print(str[:]) # 当结束位置和步长都没写时,可以将省略两者之间的 ":"
注意:开始位置、结束位置和步长都是可以为负数的。因为序列的切片操作和索引是相对应的。即索引可以为负数,那么切片操作中开始位置、步长、结束位置都可以是负数。
str = 'HelloWorld'
print(str[-1:-11:-1]) # 步长为-1,开始位置为-1,结束位置为-10
str = 'HelloWorld'
# 前面是不能省略的,只能省略后面,否则达不到我们想要的效果
print(str[::-1]) # 步长为-1,开始位置默认为-1,结束位置默认为-10
常见的操作序列的函数与操作符
首先,就是我们之前再学习字符串时的相加和相乘操作。
# 字符串相加(拼接)
print('Hello'+'World') # 输出HelloWorld
# 字符串相乘(幂)
print('Hello'*2) # 输出HelloHello
# 字符串相乘的两者的次序可以交换
print(2*'Hello') # 输出HelloHello
操作符 / 函数 | 描述 |
x in s | 如果x是s的元素,结果为True,否则结果为False |
x not in s | 如果x不是s的元素,丝结果为True,否则结果为False |
len(s) | 序列s中元素的个数 (即序列的长度) |
max(s) | 序列s中元素的最大值 |
min(s) | 序列s中元素的最小值 |
s.index(x) | 序列s中第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |
注意:对于序列的 max 和 min 操作,比较的依据取决于序列中元素的类型。
如果序列中的元素是字符串,比较的是字符的编码值,在某种程度上可以理解为类似于ASCII码值(对于ASCll 范围内的字符来说),但对于更广泛的 Unicode 字符集,是按照其Unicode 编码值进行比较。
如果序列中的元素是数字类型(如整数、浮点数等),则是按照数字的大小进行比较。
如果序列中的元素是其他可比较类型的对象(如自定义的类,只要实现了比较方法),则按照自定义的比较规则进行比较。
这里不理解暂时没关系,后期会慢慢学习的。想了解ASCII码值的小伙伴,可以去看这篇博客:
print('e' in 'Hello') # True
print('x' not in 'Hello') # True
print(len('Hello')) # 5
print(max('Hello')) # o --> o的ASCII码值最大
print(min('Hello')) # H --> H的ASCII码值最小
print('Hello'.index('l')) # 2 --> Hello中l第一次出现的位置为2
# print('Hello'.index('w')) # 如果不存在的话,就会报错
print('Hello'.count('l')) # 2 --> Hello中l出现的次数为2
print('Hello'.count('w')) # 0 --> 不存在,那么出现的次数就是0
好啦!本期 初始Python篇(2)——逻辑控制、序列 的学习之旅就到此结束啦!我们下一期再一起学习吧!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj