知识模块(3) 孜孜不倦
一、运算符
# 算术运算符:/ 除号 *乘号 -减号 +加号 //整除 %取余 **幂运算
3 / 2 = 1.5
3 // 2 = 1
3 % 2 = 1
3 ** 2 = 9
4 ** 3 = 64
# 比较运算符:>大于 <小于 ==等于 !=不等于 >=大于或等于 <=小于或等于
print(1<2) # 满足条件,结果:True
print(1>2) # 不满足条件,结果:False
print(1==2) # 不满足条件,结果:False
print(1!=2) # 满足条件,结果:True
# 赋值运算符:*= /= += -= //= **= %=
a = 5
b = 1
b = b + a # 简写 b+=a
print(b) # 6
b *= a
print(b) # b = 6*5
# 逻辑运算符:and or not
and: 且,和;一假则假
or : 或 ; 一真则真
not: 取反
print(6 and 8) #结果8 print(6 or 8) #结果6
print(0 and 1) #结果0 print(0 or 1) #结果1
print(not(0)) #结果True print(not(5)) #结果False
and 左右两个满足条件就输出and右边的值,只要其中一个不满足就输出False;
or 只要左边满足条件就输出结果,当两个都不满足就输出False;
not 取反,如果为True,则输出False。
运算的优先级:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
算术运算中:幂运算** 优先级最高!再算* / // % ;最后算 + -。
逻辑运算:not > and > or。
二、数位分离,取余数与除法的结合使用
题1:输入一个两位的整数,求它的个位数与十位数。
# 首先我们定义一个变量a,用input输入,再转换为整数类型
a = input("整数:") #68
a = int(a)
ge = a % 10 #个位数
shi = a // 10 #十位数
print(ge*10 + shi) #86
题2:输入一个三位整数,求它的个、十、百位数。
a = int(input("三位整数:"))
ge = a % 10
shi = a% 100 // 10 # a // 10 % 10
bai = a // 100
# 输出各个位数的乘积
print(ge * shi * bai)
题3:输入一个四位整数,求它的个、十、百、千位数。
a = int(input("输入四位整数:")) # input输入 4235
ge = a % 10 // 1 # 1可忽略不写
shi = a % 100 // 10
bai = a % 1000 // 100
qian = a // 1000
print(ge,shi,bai,qian)
由上3道题可知:
1. 个位数的获取都是取余10即可;
2. 最高位数是直接整除;
3. 其他位数是顺序 "补0"。
三、求时间
1小时(h) = 60分(m) = 3600秒(s)
#题1:假如有 1h:20m:30s, 时间全部转为秒数t怎做?
t = 1*3600 + 20*60 + 30 # 1h*3600+20m*60+30s
print(t) # 全部秒数:4830
#题2:输入4830秒, 输出:时 分 秒
t = int(input("秒数:"))
s = t % 60 #秒
m = t % 3600 // 60 #分
h = t // 3600 #时
print(h,":", m ,":", s)
#题3:输入22小时125分钟306秒,转为符合进率的时间
# 1.输入时分秒值,定义变量h, m, s
h = int(input("时:"))
m = int(input("分:"))
s = int(input("秒:"))
# 2.进率转换,多的秒数转为分钟,多的分钟转为小时,多的小时去掉
m = m + s // 60 # 多的秒数转为分钟,并加上原来的分钟数
s = s % 60 # 剩余的秒数
h = h + m // 60 # 多的分钟转为小时,并加上原来的小时数
m = m % 60 # 剩余的分钟数
h = h % 24 # 剩余的小时数
print(h,":", m ,":", s)
运算符计算(三)
一、选择题
1. 已知a = 5,a *= 2,那么print(a)的结果为?()
A、5 B、2 C、10 D、20
2. 观察下面的程序,运行结果为?( )
a=8
a+=1
print(a)
a*=10
print(a)
a**=2
print(a)
A、9 B、90 C、8100
D、9
90
8100
3. a=1.27; print (eval('a+10')) 上述代码的执行结果是?( )
A、1.2710 B、系统报错 C、11.27 D、1.27+10
4.运行下列代码,d输出的结果是?( )
a,b,c=23,13,3
d=(a+b)-c**c
A. 22 B. 27 C. 99 D. 9
5.下列运算中,运算结果为True的是?( )
A. 2>3 and 3>2
B. 4!=0 and 3+2>=5
C. 3**2<8 or 3+2<5
D. not 20>=20
6.同学们排队做操,按名单顺序,每10个人一排,要问第n个人是第几排,下列哪一种方法可以实现?( )
A. n // 10 B. n % 10
C. (n-1) // 10 + 1 D. (n-1) % 10 + 1
7.执行 print(3 > 2 or 4 < 5) 的结果是?( )
A. 1 B. 0 C. True D. False
8.已知变量a = 5,执行下列哪个代码后,a的值为10。( )
A. a >= a + 5 B. a += 5 C. a == 5 D. a *= 5
9.关于比较运算符说法正确的是?( )
①!=表示为不等于,如果两个操作数不相等,则为False
②<=表示为小于等于,如果左边的数小于或等于右边的数,则为True
③若a=2,b=5则a!=b为True
A. ①② B. ②③ C. ①③ D. ①②③
10.如果某年的第1天也就是一月一日是星期一。星期一记作1,星期二记作2,以此类推,星期日记作0。要求这一年的第d天是星期几,下列哪一种方法可以实现?( )
A. d % 7 B. (d - 1) % 7 C. (d - 1) % 7 + 1 D. (d + 1) % 7
二、填空题
逻辑运算符优先级: not > and > or
- 七个算术运算符: ______________________________________。
- 优先级最高的符号为 _________,优先级最低的一类运算符为 ___________________。
- 请写出六个比较(关系)运算符 ________________________________________。
- 判断:!= 的作用是判断两边是否相等,如果两边不相等则为False( )。
- 三个逻辑运算符的运算优先级最高的为 _____,其次为 _____,最后是_____。
(1) 4 + 32 % 7.0 的值为:____________ (2) 8 + 9 // 4 的值为:_________________
(3) 64 / 2 ** 3 的值为:_____________ (4) 3 > 2 and 5 < 5 的值为:____________
(5) 4*4 == 4**2 and 1 的值为:_______ (6) 8 > 7 or 9 的值为:____________
(7) not 9 and 10 的值为:____________ (8) 7 and 8 or 9 and 10 的值为:________
(9) 0 and 5 or 7 and 8 的值为:______ (10)‘2’ * 2的值为:_________
(11) “123”+“321”的值为:_________