python3初探(2) 运算符,条件和循环

mac2025-06-14  20

1.运算符

python的运算符和C差不多,以下摘录不一样的。

1.数字运算符和赋值运算符

**=幂赋值运算符c **= a 等效于 c = c ** a//=取整除赋值运算符c //= a 等效于 c = c // a

 

第一个是乘方运算,比如2**4,就是2的四次方

第二个是除法取整,之前也提过,/的结果是浮点数,//的结果是整数

2.逻辑运算符

在C里头,逻辑运算与或非就是&、|、!这三个了,python里用了and、or、not

比如,a与b即为a and b,非a即为 not a

(感觉还挺清晰)

3.成员运算符(第一次见哈)

运算符描述实例in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

 

比如判断x在不在y序列里,就写个if(x in y),如果在,x in y即为真,执行if条件内的语句;为否,则执行else条件内的语句

4.身份运算符(也是第一次见)

身份运算符用于比较两个对象的存储单元

运算符描述实例isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 Falseis notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

注: id()函数用于获取对象内存地址。

就是看看两对象的内存地址是不是一呗,暂时不知道有啥用

然后贴一张优先级顺序表,也是在菜鸟教程里摘录的:

运算符描述**指数 (最高优先级)~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)* / % //乘,除,取模和取整除+ -加法减法>> <<右移,左移运算符&位 'AND'^ |位运算符<= < > >=比较运算符== !=等于运算符= %= /= //= -= += *= **=赋值运算符is is not身份运算符in not in成员运算符not and or逻辑运算符

2.条件

终于感觉进入正题了,整了那么多基础的东西就像认识英语的26个字母一样,现在开始学习语法。

条件控制,咱们在C里最熟悉的if、else if、else ,听得耳朵都起茧了。但是在python里是以怎样的形式表现呢?

if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3

注意缩进这很重要,因为在python里缩进取代了花括号,这有效的强迫大家必须要整齐排版!(我已经不想再看到天花乱坠的花括号了)。

还有冒号,取代了if语句里的括号,别丢了。

虽然说这里有if依旧可以不一定带上else,但是作为强迫症患者,也为了防止程序出现奇怪的错误,咱们还是带上吧。(时时刻刻牢记有几个if就要有几个else!)

3.循环

循环循环循环!咱们在C中的循环有for和while,咱们对这两位是非常熟悉了(do while:别忘了我嗷)。在python里也不会缺少这两位的身影,至于表现形式↓

1.for循环

在C语言中,for循环的表现形式是这样的:for(x=0;x<n;x++),当然你还可以写成其他的形式,总而言之我只是举了个例子。

而在python里,它是这样的:

for x in y: <statements> else: <statements>

是的,大家喜欢把这个循环称为“遍历”,x是y里头的某个元素(你随便起名吧),这个y一般可能是list、set、或者dict,反正它们总是一些数据的组合,这个for做到的就是把其中的每一个元素都拿出来一次,感觉是不是和C的意义差别比较大?

C的for循环就我个人而言,还是作为计数的意义比较大。比如说,我要执行某个同样的语句5次,给一个大小为5的数组赋值之类的,咱们就会用到for。

而在python,取决于它数据类型的特点,for拥有了遍历的意义。

(其实我一直有个疑惑,C可以通过检查文件开头的变量定义来保证不会重复定义全局变量,而在python中你总可以随时用随时定义一个变量,怎么样才知道自己没有重复呢?)

然后我做了个小小的实验。

1.

a=5 b=[1,2,3,4] for a in b: print(a)

2.

b=[1,2,3,4] a=5 for a in b: print(a)

这两个打印出来的结果是:

好像是这个for a in b里头的a只是个类似于C语言中形参的东西,在这个循环内产生作用,而且不会和全局变量a冲突。

2.while循环 相对于for,我while用的就比较少(除了main里的大循环while(1))。在用C做嵌入式设计的时候,一般会用来做等待,比如等待ADC转换完成,等待某个外设的flag数值改变之类的,不过它也是必不可少的啦。

在python里,它表现为这样:

a=1 while a<10: print(a) a+=1

先判断条件,再执行循环,这个倒是很好理解。

python里没有do while循环

(do while:完了我被抛弃←其实我在C里也觉得你超级没用啊!

3.一些迷之使用方法

while....else

while ! else !  best match!

(虽然我觉得有点怪怪的,不过菜鸟教程里提到我还是记一下)

while condition1 : a=1 else a=2

在 while … else 在条件语句为 false 时执行 else 的语句块。(我怎么觉得蛮鸡肋,既然都跳出循环了直接往下执行就行了,搞一个else干啥)

4.新朋友range(),帮助你遍历数字序列!

还记得在C语言里咱们熟悉的for用法吗,用来进行多次循环!

而刚刚咱们发现在python里头for是用来遍历list或者tuple之类的元素,我们想要一些别的功能!(比如像C里头一样)

你不必每次都手动创建一个tuple了,用上range(),轻松实现你的要求。

比如:

for x in range(0,10,2): print (x)

表示产生一个范围为(0,10)的数列,从0开始,步长为2(步长可以为负数!)

结果如下:

感觉还是挺方便的。

5.最后的pass,大家的好帮手

如果今天我要写一个循环,或者条件,或者随便什么。

但是我没想好我要在这个条件内放什么,怎么办,如果空着又违反语法。在C里头,你可以丢一个;分号解决问题,在python里,有个关键字pass,代表空语句。

我是觉得pass比一个小分号醒目多了,曾经出现过一个else;而我没发现这个分号,在这个else底下大写特写结果怎么也实现不了功能的情况。

 

最新回复(0)