初始Python篇(2)——逻辑控制、序列
CSDN 2024-10-24 08:05:01 阅读 95
找往期文章包括但不限于本期文章中不懂的知识点:
个人主页:我要学编程(ಥ_ಥ)-CSDN博客
所属专栏: Python
目录
顺序结构
选择结构
循环结构
遍历循环-for
break 和 continue
无限循环-while
pass空语句
猜数字小游戏
序列
序列相关的操作
切片操作
常见的操作序列的函数与操作符
编程语言共有的程序结构结构:顺序结构、分支结构、循环结构。
顺序结构
概念:按照程序语句的自然顺序,从上到下,依次执行每条语句。
选择结构
选择结构也称为分支结构,是按照条件的不同,选择执行不同的代码块。
选择结构主要是靠 if-else 来实现的。例如,输入一个数字,判断是奇数,还是偶数。
if - else 的语法结构:
<code>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
语法格式:
<code># 第一种
for 循环变量 in 遍历对象:
代码块
# 第二种
for 循环变量 in 循环对象
代码块
else: # 这个else只有在循环正常执行完毕之后,才会去执行的
代码块
# 循环变量是我们自己定义的
# 遍历对象一般是序列。例如,字符串、元组等(后面会学)
我们可以来遍历一个字符串并输出。
我们还可以和在C语言、Java中那样去进行范围遍历。
这里我们使用的是Python的内置函数:range。其可以实现范围遍历,但要注意的是:编程中,基本上范围都是前闭后开的状态,[1, 10)
接下来,我们学习第二种for循环的方式。
上面的代码中遇到了break,提前结束了循环,这就叫非正常结束循环。只有当循环变量全部遍历完成之后结束的循环,才叫正常结束循环。
break 和 continue
上面的代码中,我们是用了Python中的保留字:break,和其一样,经常与循环语句一起搭配使用的,还有一个是continue。
break的作用是 提前结束循环;continue的作用是跳过本次循环后面的部分,但是还是会继续执行循环。下面用代码来演示:
无限循环-while
语法格式:
<code># 第一种方式:
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 到 -数组长度的反向递减的情况。
我们前面学习的字符串就是由字符组成的序列。现在我们可以利用不同的索引来访问字符串了。
字符串只是序列的一种,序列还有其他的一些组合数据类型,后面再学习。
序列相关的操作
切片操作
对于是序列类型的对象(例如,字符串),我们都可以使用切片操作来访问其中的序列元素。
我们前面是访问一个一个的元素,现在我们要来访问一个范围内的元素,就可以使用切片操作。
<code># 切片操作
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码值的小伙伴,可以去看这篇博客:
C语言常见概念-CSDN博客
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)——逻辑控制、序列 的学习之旅就到此结束啦!我们下一期再一起学习吧!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。