python运算符

python运算符_第1张图片

python运算符

  • 算数运算符
  • 比较运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 三目运算符
  • 运算符优先级
  • 练习1
  • 练习2
  • 练习3
  • 练习4
  • 练习5
  • 练习6

算数运算符

算术运算符与数值一起使用来执行常见的数学运算:

运算符 名称 实例
+ 加法运算符 10 + 3 = 13
- 减法运算符 10 - 3 = 7
* 乘法运算符 10 * 3 = 30
/ 除法运算符 10 / 2 = 5.0—>返回浮点数
% 求模运算符 10 % 3 = 1—>返回除法的余数
// 整除运算符 10 // 3 = 3—>代表除以并保留整数
** 次幂运算符 10**3 = 1000

注意事项:

  • " / " 除法运算计算结果是浮点数 ,即使两个数都是整数,结果也是浮点数.
  • " // "" % " 都是向下取整
  • 如果想同时得到 商 和 余数 ,可以用 divmod() 这个方法。
//初始化变量a和b
a = 10
b = 3
// 打印输出(a//b,a%b)
print(divmod(a, b))
// 输出值为(3,1)即---> (a//b,a%b)
  • 浮点数计算存在精度问题(二进制和十进制的转换问题)如果需要解决这个问题,可以引入decimal模块;
# 语句
from decimal import  Decimal
# 使用Decimal()计算两数据之差
Decimal('数据1'-Decimal('数据2'

比较运算符

比较运算符用于比较两个值:

运算符 名称 实例
== 相等 3 == 3—>返回值:True
!= 不相等 3 != 3—>返回值:False
> 大于 3 > 2—>返回值:True
< 小于 3 < 2—>返回值:False
>= 大于等于 3 >= 2—>返回值:True
<= 整小于等于 3 <= 2—>返回值:False

注意事项:

  • int 不能 直接与 str 比较
  • python3 中 不支持 <> 号,用 != 替代。
  • == 、!= 、>=和<=符号 不能分开写
  • str 与 str 之间比较的是 ASCII,并且 逐个比较
  • 连续比较,如:a>b>c 可拆解为 a>b and b>c

赋值运算符

赋值运算符用于为变量赋值:

运算符 名称 实例 等同于
= 赋值运算符 a = 1 a = 1
+= 加法赋值运算符 a += 1 a = a + 1
-= 减法赋值运算符 a -= 1 a = a - 1
*= 乘法赋值运算符 a *= 1 a = a * 1
/= 除法赋值运算符 a /= 1 a = a / 1
%= 取余数赋值运算符 a %= 1 a = a % 1
//= 取整除赋值运算符 a //= 1 a = a // 1
**= 幂赋值运算符 a **= 1 a = a ** 1

注意事项:

  • 赋值:是将等号右边赋值给等号左边
  • python 不支持 a++、a-- 语法
  • 运算符不能分开写(例如 += 符号 不能分开 写成 + =)

逻辑运算符

逻辑运算符用于组合条件语句:

运算符 名称 描述 实例
and 逻辑与运算符 如果两个语句都为真,则返回 True 3 > 2 and 2 < 3—>返回值:True
or 逻辑或运算符 如果其中一个语句为真,则返回 True 3 > 2 and 2 > 3—>返回值:True
not 逻辑非运算符 反转结果,如果结果为 true,则返回 False not(3 > 2 and 2 < 3)—>返回值:False

注意事项:

  • 逻辑运算符使用过程中遵循:懒惰(短路)原则
# 输出打印逻辑与条件表达式结果(同真则真)
print(10 and 20) # 输出结果 20,(非零数字布尔值--->True,所以1020都为True,程序执行到20时输出结果)
# 输出打印逻辑与条件表达式结果(一假则假)
print(0 and 20)# 输出结果 20,(数字0布尔值--->False,程序执行到0时输出结果)
# 输出打印逻辑或条件表达式结果(一真则真)
print(10 or 20)  # 输出结果 10,(数字10--->True,程序执行到10时输出结果)

位运算符

位运算符用于比较(二进制)数字:

运算符 名称 描述 实例 (二进制数)
& 按位与运算符 两者都为1才为1,否则为0 (0011 1100 & 0000 1101)–>0000 1100
I 按位或运算符 只有一个为1则为1,否则为0 (0011 1100 I 0000 1101)–>0011 1101
^ 按位异或运算符 两者相等则为0,否则为1 (0011 1100 ^ 0000 1101)–>0011 0001

成员运算符

成员资格运算符用于判断序列是否在对象中出现:

运算符 描述 实例
in 判断某个值是否在指定序列中,在则返回True x in y
not in 判断某个值是否在指定序列中,不在则返回True x not in y

身份运算符

身份运算符用于比较对象,不是比较它们是否相等,但如果它们实际上是同一个对象,则具有相同的内存位置:

运算符 描述 实例
is 判断两个对象的内存地址是否一致,是则返回True x is y
is not 判断两个对象的内存地址是否不一致,不是则返回True x is not y

注意事项:

  • 身份运算符用于比较对象(内存地址),不是比较它们值是否相等。比较值是否相等用==。

三目运算符

语句:

# 三目运算符,如果exp1-->True-->exp2,否则-->exp3
True_exp2 if exp1 else False_exp3

运算符优先级

下表列出了从 最高到最低优先级 的所有运算符。优先级高的运算符优先计算或处理,同级别 的按从左往右的顺序计算(赋值运算符 除外,它是按从 右往左 的顺序)
python运算符_第2张图片

练习1

判断 “amy” 是否在[“bob”,“tony”,“Lisa”,“Steven”] 里面如果在则输出’amy 在逻辑大家庭’,否则输出’ amy 不在…好难过

# 初始化列表logic_family,并添加元素"bob" ,"tony","Lisa","Steven";
logic_family = ["bob", "tony", "Lisa", "Steven"]
# 初始化teacher_name,并赋值"amy"
teacher_name = "amy"
# 判断"amy"是否在logic_family列表内
print(f"{teacher_name}在逻辑大家庭") if teacher_name in logic_family else print(f"{teacher_name}不在...好难过!!")

练习2

‘ax’<’xa’ 为True 还是False?为什么?
答:‘ax’<’xa’为False,字母比较大小是按照ASCII逐个比较的。

  • a = 97 x =120。‘ax’<’xa’比较大小时 先 比较a和x,此时a < x --> 97 < 120为True;
  • 再比较x和a,此时x < a --> 120 < 90 显然不成立为False。
  • 共两步判断存在False 故‘ax’<’xa’为False

练习3

以下程序如果输入666执行那个语句?为什么?
temp = input(‘请输入:’)
if temp == ‘Yes’ or ‘yes’:
print(‘if执行了!’)
else:
print(‘else执行了!’)

答:执行了if语句。

  • 因为temp == ‘Yes’ or 'yes’这一句中 比较运算符优先级高于逻辑运算符,所以会先比较temp 和 ‘Yes’ 值的大小;
  • 输入666输出’666’ 与’yes’并不相等所以—>False
  • temp == ‘Yes’ -->False,执行逻辑运算符or时–>False or ‘yes’–> 'yes’布尔值为恒为True,故输出布尔值True ;
    综上所述: 无论输入什么数据,输出都为:if被执行了!!!

练习4

is 与==的区别?

答:is 是判断两对象内存地址是否一致,而==则是判断两对象值是否相等

练习5

用户输入a,b。
当a 与b 都不为0 时则输出a 与b 做商;
否则输出a与b 的乘积。

# 初始化变量a和b,使用输入函数为a和b赋值,并将输出结果强转成整型
a = int(input("请输入a的值:"))
b = int(input("请输入b的值:"))

# 判断a与b是否都不为0
if a*b != 0:
    print(a/b)   # 如果不为零则输出a与b的商
else:
    print(a*b)    # 否则输出a与b的乘积

练习6

基于题5,使用三目运算符输出a,b 较大的数

# 初始化变量a和b,使用输入函数为a和b赋值,并将输出结果强转成整型
a = int(input("请输入a的值:"))
b = int(input("请输入b的值:"))

# 判断a与b的大小,并输出较大的数
print(a) if a > b else print(b)

你可能感兴趣的:(python,其他)