算术操作符
+- * /(真实除法) %(取余数) ** //(整除)
在Python中,可以这样写:a = a + 3等同于a += 3
也可以这样子: a = b = c = d = 10
Python3 的除法已经变成真实的除法,即会返回一个浮点型的值
//执行的是地板除法,即返回比商小的整数
%:取余数
被除数X = (x // y)y + (x % y)
**指数运算操作符
一些函数
divmod():同时求出地板除的结果和余数
divmod(3,2)
(1, 1)
divmod(-3,2)
(-2, 1)
abs():取绝对值
x = -520
abs(x)
520
z = 1 + 2j
abs(z)#取复数的模
2.23606797749979
int():取整,直接把浮点数截肢,不是四舍五入哦
int(9.99)
9
int(3.01)
3
complex():返回复数
float():指定的值转换为浮点数
float('3.14')
3.14
float(520)
520.0
pow():幂运算
pow(2,3)
8
2 ** 3
8
pow(2,-3)
0.125
2 ** -3
0.125
pow(2,3,5)# =2 ** 3 % 5
3
2 ** 3 % 5
3
比较操作符
根据表达式的真假来返回布尔类型的值
<; <=;>; >=; ==; !=
逻辑操作符
and:当其左侧和右侧同时为True时,其结果才为True;左右边只要有一个False,结果就为False
or:只需要左边或者右边为True时,结果才为True;只有两边同时为False时,结果才为False
not:一元操作符,取其相反的布尔类型的值
非0的数都为True
在Python中,3<4<5等同于(3<4)and (4<5)
注意Python中任何对象都能直接进行真值测试(测试该对象的布尔类型值为True或者False),用于if或者while语句的条件判断,也可作为布尔逻辑运算符的操作数
短路逻辑
- 核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值
- 从Python的角度看,根本没有必要将最终结果判断完再进行汇报,更高效率的方法是,直接把影响结果的关键值抛出来即可
优先级问题
当一个表达式同时存在多个运算符时,就可能存在优先级问题,先乘除后加减 ,比较操作符要比逻辑操作符高,必要时要增加()以增加代码的可读性
**指数操作符要比其左侧一元运算符的优先级高,但比其右侧的一元运算符的优先级低
如下图
幂运算(**)>正负号(+ - )>算术操作符(+ - * / //)>比较操作符(<; <=;>; >=; ==; != >)逻辑运算符(not; and; or)
not > and > or
Task
-
Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
1 -
a < b < c 事实上是等于?
(a<b)and (b<c) -
不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
0.04
3. 如何简单判断一个数是奇数还是偶数?
取余数判断%
while 1:#保证程序可以运行n次
number = input("请输入一个非0的数:")
a = int(number)
b = a % 2
if b == 1:
print("是奇数")
else:
print('是偶数')
- 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
((not 1)or 0) and (1 or 3) and (4 or 5) and (6 or 7) and (8 or 9)= 0 and 1 and 4 and 6 and 8 = 0(错了)
(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)= 0 or 0 or 4 or 6 or 9=4
短路逻辑:3 and 4 == 4 ,而 3 or 4 == 3 - 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?
看整除与真实除法是否相等if int(a/400) == a/400
用取余数的方法:
year = input('请输入一个年份:')
while year.isdigit() == 1:
a = int(year)
b = a % 400
c = a % 4
d = a % 100
if b == 0:
print('闰年')
else:
if c == 0 and d != 0:
print('闰年')
else:
print("不是闰年")
year = input('请输入一个年份:')
if year.isdigit() == 0:
print('输入不合法')
year = input('要输入整数哦:')
while year.isdigit() == 1:
a = int(year)
b = a % 400
c = a % 4
d = a % 100
if b == 0:
print('闰年')
else:
if c == 0 and d != 0:
print('闰年')
else:
print("不是闰年")
year = input('请输入一个年份:')
6.请写一个程序打印出 0~100 所有的奇数。
print('0-100内的所有奇数:')
i = 0
while i <= 100:
if i % 2 == 1:
print(i)
i = i + 1
else:
i += 1
7. 我们说过现在的 Python 可以计算很大很大的数据,但是…真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?
8.爱因斯坦的难题
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)请编程求解该阶梯至少有多少阶?
小甲鱼代码:
x = 7
i = 1
flag = 0
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
i += 1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')