一木.溪桥学Python-03: Python 运算符

一木.溪桥 在Logic Education跟Amy学Python

12期:Python基础课
一木.溪桥学Python-03: Python 运算符
日期:2020年12月18日


学习目标:

算术、比较、赋值、逻辑、位、成员、身份、三目运算符。

学习内容:

算术运算符

+
-
*
/
% 返余
// 返商整
** 幂次
  • tips
    / 计算结果是 浮点数 ,即使两个数都是整数,结果也是浮点数
    // 与 % 都是 向下取整
  • 如果想同时得到 商 和 余数 ,可以用 divmod() 这个方法。该方法的返回值是 tuple(x//y, x%y)
  • 浮点数精度的问题:参考文章
  • 使用decimal进行浮点数的精确计算
    Python 标准库为我们提供了decimal 这个模块来解决这个问题,decimal 常用于需要精确处理浮点数的场合,比如银行账户金额、货币加减等。
from decimal import Decimal
a = 1.33-1.111
b = Decimal('1.33')-Decimal('1.111')
print(a)
print(b)

run:
0.21900000000000008
0.219

比较运算符

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

赋值运算符

=
+=
-=
*=
/=
%=
//=
**=
  • tips:
  • 赋值:是将等号右边赋值给等号左边
  • python 不支持 a++ 、a-- 语法
  • += 等符号 不能分开 写成 + =

逻辑运算符

and
or
not
  • and or的短路(懒惰)原则
print(10 and 20)
print(20 and 10)

run:
20
10

位运算符

&	按位与:两者都为1才为1,否则为0
^	按位或:只有一个为1则为1,否则为0
|	按位异或:两者相等则为0,否则为1
  • bin()函数

成员运算符

in	判断某个值是否在指定序列中,在则返回True
not in	判断某个值是否在指定序列中,不在则返回True
  • in 与 not in 是 Python 独有的运算符(全部都是小写字母),用于判断对象是否
    某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类
    型的 True 或者 False 。

身份运算符

is	判断两个对象的内存地址是否一致,是则返回True
is not	判断两个对象的内存地址是否不一致,不是则返回True
  • 身份运算符也是 Python 的特色语法(全部都是小写字母)
  • tips:
  • is 与 == 的区别
  • is 用于判断两个变量的引用是否为同一个内存地址 ( 可使用 id() 查看 )
  • == 用于判断两个变量的值是否相等

三目运算符

  • python 中的三目运算符表示方法:
    True_statements if expression else False_statements
    在这里插入图片描述
a = 1
b = 2
print(a+b if a>b else b-a)

run:
1

运算符优先级

一木.溪桥学Python-03: Python 运算符_第1张图片

作业:

一木.溪桥学Python-03: Python 运算符_第2张图片
一木.溪桥学Python-03: Python 运算符_第3张图片

作业答案:

题1:(错解)

name = 'amy'
print( 'amy  在逻辑大家庭' if name ==  ["bob","tony","Lisa","Steven"]else ' amy  不在 ... 好难过')

run:
amy  不在 ... 好难过

一木.溪桥学Python-03: Python 运算符_第4张图片
一木.溪桥学Python-03: Python 运算符_第5张图片
正解:(注意==和in的区别)

name = 'amy'
print( 'amy  在逻辑大家庭' if name in ["bob","tony","Lisa","Steven"]else ' amy  不在 ... 好难过')

run:
 amy  不在 ... 好难过

题2:

print('ax' < 'xa' )

run:
True

str 与 str 之间比较的是 ASCII,并且 逐个比较

题3: if 执行了!(理解有误)

  • input函数输入的内容都为字符串
  • == 用于判断两个变量的值是否相等
  • 两个变量的值都为True
temp = input('请输入:')
if temp == 'Yes' or 'yes':
    print('if执行了!')
else:
    print('else执行了!')
 run:
 请输入:666
if执行了!

Amy的答案
一木.溪桥学Python-03: Python 运算符_第6张图片
嘿嘿,我错安逸了哈!

题4:

  • is是比较的内存地址
  • == 是比较的变量的值

题5:

a = input('a = ')
b = input('b = ')
print(float(a)/float(b) if a and b !=0 else float(a)*float(b))

run:
a = 0
b = 3
0.0

a = 1
b = 5
0.2

a = 1
b = 0
Traceback (most recent call last):
  File "F:/Program Files/Pycharm/Projects/Lesson03/作业.py", line 17, in 
    print(float(a)/float(b) if a and b !=0 else float(a)*float(b))
ZeroDivisionError: float division by zero

a = j
b = k
Traceback (most recent call last):
  File "F:/Program Files/Pycharm/Projects/Lesson03/作业.py", line 17, in 
    print(float(a)/float(b) if a and b !=0 else float(a)*float(b))
ValueError: could not convert string to float: 'j'

Amy我这个代码好多bug啊!!!
答案:
一木.溪桥学Python-03: Python 运算符_第7张图片

题6:

a = input('a = ')
b = input('b = ')
print('输入较大数为:', a if a>b else b)

run:
a = 3
b = 5
输入较大数为: 5

a = 2
b = 2
输入较大数为: 2

a = j
b = k
输入较大数为: k

Amy老师两数相等时,三目运算符的判断是不是不符合题目的判断逻辑呀!

你可能感兴趣的:(Python学习之路,python)