初始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)——逻辑控制、序列 的学习之旅就到此结束啦!我们下一期再一起学习吧!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。