基本运算符

基本运算符

一、算术运算符

python支持的算数运算符与数学上计算的符号使用是一致的

以下假设变量a为10,变量b为20:

运算符描述实例
+加:两个对象相加a + b 输出结果 30
-减:得到负数或是一个数减去另一个数a - b 输出结果 -10
*乘:两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200
/除:x除以yb / a 输出结果 2
%取模:返回除法的余数b / a 输出结果 0
**幂:返回x的y次幂a ** b 为10的20次方,输出结果为100000000000000000000
//取整除:返回商的整数部分(向下取整)>>> 9//2 得4。>>>-9//2 得-5。
	ar = 20
	vr = 10
	ark = ar + vr  # 加法
	print(ark)
	ark = ar - vr  # 减法
	print(ark)
	ark = ar * vr  # 乘法
	print(ark)
	ark = ar / vr  # 除法
	print(ark)
	ark = ar % vr  # 取模(余数)
	print(ark)
	
	#修改变量
	ar = 2
	vr = 3
	ark = ar ** vr  # 幂(次方)
	print(ark)
	ark = ar // vr  # 整除(向下取整)
	print(ark)

二、比较运算符

比较运算用来对两个值进行比较,返回的是布尔值True或False

以下假设变量a为10,变量b为20:

运算符描述实例
==等于:比较对象是否相等(a == b) 返回 False。
!=不等于:比较对象是否不相等(a != b) 返回 True。
>大于:返回x是否大于y(a > b) 返回 False。
<小于:返回x是否小于y。所有比较运算符返回1表示真。返回0表示假。这分别与特殊的变量True和False等价。(a < b) 返回 True。
>=大于等于:返回x是否大于等于y(a >= b) 返回 False。
<=小于等于:返回x是否小于等于y(a <= b) 返回 True。
	ar = 3
	vr = 2
	print(ar == vr)  # 比较相等情况 不等返回False 相等返回Ture
	print(ar != vr)  # 比较不等情况 不等返回Ture 相等返回False
	print(ar > vr)  # 比较大于情况 大于返回Ture 小于则返回False
	print(ar < vr)  # 比较小于情况 小于返回Ture 大于则返回False
	print(ar >= vr)  # 比较大于等于情况 小于返回False 大于则返回Ture
	print(ar <= vr)  # 比较小于等于情况 大于返回False 小于则返回Ture

三、赋值运算符

ython语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。

1.增量赋值

以下假设变量a为10,变量b为20:

运算符描述实例
=简单的赋值运算符c = a + b将a + b 的运算结果赋值为c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c ** a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a
 ar = 10
 vr = 3
 ar += vr  # ar = ar + vr (加法)
 print(ar)

 ar -= vr  # ar = ar - vr (减法)
 print(ar)

 ar *= vr  # ar = ar * vr (乘法)
 print(ar)

 ar /= vr  # ar = ar / vr (除法)
 print(ar)

 ar %= vr  # ar = ar % vr (取余数)
 print(ar)

 ar **= vr  # ar = ar ** vr (次方)
 print(ar)

 ar //= vr  # ar = ar // vr (取整,向下取)
 print(ar)

2.链式赋值

我们想把同一个值同时赋值给多个变量名。链式赋值指的是可以用一行代码搞定这件事

	a=b=c = 10
	print(a,b,c)  # 把同一个变量值赋予给多个变量名

3.交叉赋值

把两个变量的值交叉互换

	ar = 10
	vr = 20
	
	'''方法一:'''
	#多弄一个变量出来
	test = ar
	ar = vr
	vr = test
	print(ar,vr)
	
	'''方法二:'''
	ar,vr = vr,ar
	print(ar,vr)

4.解压赋值

我们想把列表中的多个值取出来依次赋值给多个变量名

	name = ['chen','vsk','hack','watt']
	
	'''方法一:'''
	name1 = name[0]
	name2 = name[1]
	name3 = name[2]
	name4 = name[3]
	print(name1,name2,name3,name4)
	
	'''方法二:'''
	a,b,c,d = name  """数据量一定要匹配,多一个不行,少一个也不行"""
	print(a,b,c,d)
	
	'''方法三:'''
	# 这个方法是取n个变量的时候
	a,*_,b = name   # *_:把列表里面没有变量赋予的值都交给*后面的变量命名并且以列表的形式返回
	print(a,*_,b)
	print(*_)

四、逻辑运算符

逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False
关键字: and or not (连接多个值)
and:与---------->and两边的值必须都是True的时候,整体结果才是True
or: 或者---------->or两边的值只要有一个是真,整体结果就是真
not: 非,取反-------->not取反

以下假设变量a为10,变量b为20:

运算符逻辑表达式描述实例
andx and y布尔“与”:如果x为False,x and y返回False,否则它返回y的计算值。(a and b)返回 20
orx or y布尔“或”:如果x是非0,它返回x的计算值,否则它返回y的计算值。(a or b)返回 10
notnot x布尔“非”:如果x为True,返回False。如果x为False,它返回Truenot(a and b)返回 False
	#1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
	>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
	False

	#2、最好使用括号来区别优先级,其实意义与上面的一样
	'''
	原理为:
	(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
	
	(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
	
	(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
	'''
	>>> (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3
	False 

	#3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
	>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
	我们用括号来明确一下优先级
	>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
	短路:       0      ''            'abc'                    
	            假     假              真
	
	返回:                            'abc'

1.可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。

	2 > 1 and 1 != 1 and True and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False

2.可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False。

	2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True

五、成员运算符

关键字:in(在) not in(不在)

运算符描述实例
in如果在指定的序列中找到值返回True,否则返回Falsex在y序列中,如果x在y序列中返回True
not in如果在指定的序列中没有找到值返回True,否则返回Falsex不在y序列中,如果x不在y序列中返回True
	name_list = ['Chen','tony','jack']
	print('tom' in name_list) #tom不在name_list里面故返回False
	print('tom' not in name_list) #tom不在name_list里面,但是not in是反着来的,故返回True

六、身份运算符

用于比较两个对象的存储单元。关键字:is(比较的是内存地址,id值) ==(比较值的)

运算符描述实例
isis 是判断两个标识符是不是引用自己的一个对象x is y,类似id(x) == id(y),如果引用的是同一个对象则返回True,否则返回False
is notis not 是判断两个标识符是不是引用自不同对象x is not y,类似id(a) != id(b)。如果引用的不是同一个对象则返回结果True,否则返回False
	name = 'chen'
	name1 = 'chen'
	print(name is name1)  # (这里涉及到了python的底层优化,如果值太小的话就是共用的id)
	print(name == name1)
	
	name = ['chen','vsk','hack','watt','tony','nvwl']
	name1 = ['chen','vsk','hack','watt','tony','nvwl']
	print(name is name1)
	print(name == name1)
	'''内存地址相同的值一定相同,值相同的内存地址不一定相同'''

七、Python运算符优先级

以下表格列出了从最高到最低优先级的所有运算符:

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,取模和取整除
+ -加法减法
>> <<右移,左移运算符
&位 ‘AND’
^位运算符
<= < > >=比较运算符
<> == !=等于运算符
= %= /= //= -= += *= **=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符
a = 20
b = 10
c = 15
d = 5
e = 0
 
e = (a + b) * c / d       #( 30 * 15 ) / 5
print(e) 
 
e = ((a + b) * c) / d     # (30 * 15 ) / 5
print(e)
 
e = (a + b) * (c / d);    # (30) * (15/5)
print(e)
 
e = a + (b * c) / d;      #  20 + (150/5)
print(e)
C语言中的基本运算符是编写程序时进行数据处理的核心工具,它们用于执行数学运算、逻辑判断、位操作、赋值等任务。以下是基本运算符的分类及其使用方法。 ### 算术运算符 算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法取模。此外,还有递增递减运算符用于对变量进行自增或自减操作。 - `+`:加法运算符,用于两个操作数相加。 - `-`:减法运算符,用于从一个操作数中减去另一个。 - `*`:乘法运算符,用于两个操作数相乘。 - `/`:除法运算符,用于一个操作数除以另一个操作数。 - `%`:取模运算符,用于得到两个整数相除后的余数。 - `++`:递增运算符,用于将操作数的值增加1。 - `--`:递减运算符,用于将操作数的值减少1。 ```c int a = 10, b = 3; int sum = a + b; // sum = 13 int difference = a - b; // difference = 7 int product = a * b; // product = 30 int quotient = a / b; // quotient = 3 (integer division) int remainder = a % b; // remainder = 1 a++; // a = 11 b--; // b = 2 ``` ### 关系运算符 关系运算符用于比较两个值之间的关系,结果是一个布尔值(真或假)。 - `>`:大于 - `<`:小于 - `>=`:大于等于 - `<=`:小于等于 - `==`:等于 - `!=`:不等于 ```c int x = 5, y = 5; int isGreater = x > y; // isGreater = 0 (false) int isEqual = x == y; // isEqual = 1 (true) ``` ### 逻辑运算符 逻辑运算符用于组合多个关系表达式,以形成更复杂的条件判断。 - `!`:逻辑非,用于反转操作数的逻辑状态。 - `&&`:逻辑与,当两个操作数都为真时,结果为真。 - `||`:逻辑或,只要有一个操作数为真,结果就为真。 ```c int p = 1, q = 0; int result1 = !q; // result1 = 1 (true) int result2 = p && q; // result2 = 0 (false) int result3 = p || q; // result3 = 1 (true) ``` ### 位运算符运算符用于对操作数的二进制位进行操作。 - `<<`:左移运算符,将操作数的二进制位向左移动指定的位数。 - `>>`:右移运算符,将操作数的二进制位向右移动指定的位数。 - `~`:按位取反运算符,将操作数的每一位取反。 - `|`:按位或运算符,将两个操作数的对应位进行或操作。 - `^`:按位异或运算符,将两个操作数的对应位进行异或操作。 - `&`:按位与运算符,将两个操作数的对应位进行与操作。 ```c unsigned int m = 5; // binary: 0000 0101 unsigned int n = 9; // binary: 0000 1001 unsigned int leftShift = m << 1; // leftShift = 10 (binary: 0000 1010) unsigned int rightShift = m >> 1; // rightShift = 2 (binary: 0000 0010) unsigned int bitwiseNot = ~m; // bitwiseNot = 4294967290 (binary: 1111 1111 1111 1111 1111 1111 1111 1010) unsigned int bitwiseOr = m | n; // bitwiseOr = 13 (binary: 0000 1101) unsigned int bitwiseXor = m ^ n; // bitwiseXor = 12 (binary: 0000 1100) unsigned int bitwiseAnd = m & n; // bitwiseAnd = 1 (binary: 0000 0001) ``` ### 赋值运算符 赋值运算符用于将值赋给变量。 - `=`:简单赋值运算符,将右侧的值赋给左侧的变量。 - `+=`、`-=`、`*=`、`/=`、`%=`:扩展赋值运算符,先进行相应的算术运算,然后将结果赋给左侧的变量。 ```c int o = 20; o += 5; // o = 25 o -= 3; // o = 22 o *= 2; // o = 44 o /= 4; // o = 11 o %= 3; // o = 2 ``` ### 条件运算符 条件运算符是C语言中唯一的三元运算符,用于根据条件选择两个值中的一个。 - `? :`:条件运算符,格式为`condition ? value_if_true : value_if_false`。 ```c int age = 20; char *status = (age >= 18) ? "Adult" : "Minor"; // status = "Adult" ``` ### 逗号运算符 逗号运算符用于在单个表达式中顺序执行多个表达式,整个表达式的值是最后一个表达式的值。 ```c int r = (1, 2, 3); // r = 3 ``` ### 指针运算符 指针运算符用于处理内存地址。 - `*`:间接寻址运算符,用于访问指针所指向的值。 - `&`:地址运算符,用于获取变量的内存地址。 ```c int s = 10; int *ptr = &s; // ptr holds the address of s int value = *ptr; // value = 10 ``` ### 求字节数运算符 `sizeof()`运算符用于获取数据类型或变量所占用的内存大小(以字节为单位)。 ```c int t; size_t sizeOfInt = sizeof(t); // sizeOfInt = 4 (on most systems) size_t sizeOfDouble = sizeof(double); // sizeOfDouble = 8 (on most systems) ``` ### 强制类型转换运算符 强制类型转换运算符用于将一种数据类型的值转换为另一种数据类型。 ```c float u = 3.14; int v = (int)u; // v = 3 ``` ### 成员运算符 成员运算符用于访问结构体或联合的成员。 - `.`:用于访问结构体变量的成员。 - `->`:用于通过指向结构体的指针访问成员。 ```c typedef struct { int id; char name[20]; } Person; Person person1; person1.id = 1; // Using . to access member Person *ptrPerson = &person1; ptrPerson->id = 2; // Using -> to access member through pointer ``` ### 下标运算符 下标运算符用于访问数组中的元素。 ```c int array[5] = {1, 2, 3, 4, 5}; int thirdElement = array[2]; // thirdElement = 3 ``` ### 运算符优先级结合性 运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值