一.运算符和分支结构
1.数学运算符
1.1+(加),-(减),*(乘),/(除),%(取余/求模),//(整除),**(幂运算)
1.1.1+,-,*,/与数学中的+,-,×,÷,相同
1 2 3 4
| print(5+2) print(6-6) print(26*2) print(2/2)
|
1.1.2% 求余数,取模:x%y求x除以y的余数
应用1:判断一个数能否被另一个数整除(判断余数是否为0)
1 2 3 4 5 6 7
| x = 5 y = 3 a = x%y if a == 0: print("x可以被y整除") else: print("x不可以被y整除")
|
应用2:取低位数/取个位(对10或者10的幂次方取余)
1 2
| num = 2335 print(num%10)
|
1.1.3// - 整除 x/y的商只取整数
1 2 3
| print(5//2) print(1.8//2) print(-5//2)
|
应用:正整数去低位/去个位
1 2
| num = 23456 print(num // 10)
|
练习:获取指定正整数的十位数
1 2 3
| num = 3945 print(num // 10 % 10) print(num % 100 // 10)
|
练习2:获取指定正整数的百位数
1 2 3
| num = 3945 print(num // 100 % 10) print(num % 1000 // 100)
|
1.1.4** - 幂运算 x**y 求x的y次方
1 2 3 4
| print(2**3) print(16**0.5) print(2.2**2) print(2.0**2)
|
2.比较运算符:>(大于),>=(大于等于),<(小于),<=(小于等于),==(等于),!=(不等于)
2.1重要结论:所有的比较运算的运算结果都是布尔
1 2 3 4 5 6 7 8 9 10
| print(10 > 10) print(10 >= 10) print(10 < 10) print(10 <= 10) print(10 == 10) print(10 != 10) a = (10==10) print(a == (10==10)) if a==1: print("003")
|
2.2注意:python中的比较运算符可以像数据一样通过连写来表示范围
1 2
| age = 20 print(18 <= age <= 28)
|
3.逻辑运算符 - and(逻辑与运算),or(逻辑或运算),not(逻辑非运算)
3.1 and - 逻辑与运算 ,并且,连接需要同时满足的多个条件
运算规则:条件1 and 条件2 全真为真,有假为假
1 2 3 4
| print(True and True) print(True and False) print(False and True) print(False and False)
|
练习:写出一个数能同时被3和7整除的条件
1 2 3 4 5 6
| aa = 63 if aa % 3 == 0 and aa % 7 == 0: print("这个数能被3和7整除") else: print("这个数不能被3和7整除") print(aa % 3 == 0 and aa % 7 == 0,aa%21==0)
|
3.2 or - 逻辑或运算 ,或者,连接需要满足的其中一个条件
运算规则:条件1 or 条件2 全假为假,有真为真
1 2 3 4
| print(True or True) print(True or False) print(False or True) print(False or False)
|
练习1:判断是否能拿奖学金,条件(绩点高于4,或者操评分不低于95)
1 2 3 4 5 6
| gpa = 3.8 score = 98 if gpa > 4 or score >=95: print("可以获得奖学金") else: print("不能拿奖学金")
|
练习2:判断指定年是否为闰年(普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年。世纪闰年:必须是400的倍数才是世纪闰年)
1 2 3 4 5 6 7
| year = 2020 if year % 4 ==0 and year % 100 !=0: print("该年为普通闰年") elif year % 400 ==0: print("该年为世纪闰年") else: print("该年为平年")
|
3.3 not - 逻辑非运算 对指定条件进行否定(取反)
运算规则: not 条件
1 2 3
| print(not True) num = 18 print(not num == 18,num !=18)
|
练习:写出一个不能同时被3和7整除的条件(能被3整除不能被7整除,能被7整除不能被3整除,既不能被3整除也不能被7整除)
1 2
| num = 22 print(not num % 21 == 0)
|
一般用于正向条件情况很复杂,反向条件很简单的时候
3.4 短路操作:
规则:条件1 and 条件2 如果条件1为False,结果为条件1,条件2不执行
条件2 or 条件2 如果条件1为True,结果为条件1,条件2不执行
1 2 3 4
| False and print("aaa") True or print("bbb") 1 and print("aaa") 0 or print("bbb")
|
3.5 逻辑运算符的扩展 - 运算对象不是布尔值
1 2 3 4
| print(1 and "49") print(1 and 49) print(0 and 49) print(6 or 7)
|
着重点:数据的布尔值 - 数据转成布尔的结果 python中所有类型数据都有布尔值
所有的零值和控制对应的布尔值都是False,其它数据的布尔值都是True
常见的零值和空值:0,0.0,’’,[],(),{},none
1
| print(bool(2)==True,bool(0)==True,True==bool(2),True==bool([]))
|
4.赋值运算符:=,+=,-=,*=,/=,%=,//=,**=
重要结论:所有赋值运算符都是为了给变量赋值 左边必须为变量
4.1 = - 定义变量,给变量重新赋值
规则:把右边的值赋值给左边的变量
4.2 +=,-=,*=,/=,%=,//=,**=
规则:把左边的变量的值加上,减去,乘上,除去,取模,整除,平方右边的值之后的值在重新赋值给变量
1 2 3 4 5 6 7 8 9 10 11
| b = 1 b += 8 print(b) b -= 3 print(b) b **= 2 print(b) b //= 4 print(b) b %= 2 print(b)
|
4.3运算符的优先级
数学运算符>比较运算符>逻辑运算符>赋值运算符
数学运算符:** > *,/,%,// > +,- 有括号先算括号
5.流程控制
5.1顺序结构 - 从上往下依次执行,每条语句执行一次
5.2分支结构 - 代码的执行看条件是否成立 (if语句)
5.2.1单分支结构 - 如果条件成立就执行某个操作,否则就不执行
语法:
if 条件语句: #if - 关键字,固定 条件语句 - 任何有结果的表达式
代码段
#判断条件是否为True,为True执行代码段,否则不执行
#如果条件语句不是布尔,就转换为布尔来看
1 2 3 4
| a = 1 if a == 1: print(True) print("aaa")
|
练习1:如果指定的数是偶数就打印偶数
1 2 3 4 5
| b = 22 if b % 2 ==0: print("偶数") if not b % 2: print("偶数")
|
练习2:如果指定的数是奇数就打印奇数
1 2 3 4 5
| b = 23 if b % 2 !=0: print("奇数") if b % 2: print("奇数")
|
练习3:判断指定(100,1000)数据是否为水仙花数
水仙花数:个位的3次方+十位的三次方+百位的三次方=它本身
1 2 3
| a = 153 if (a % 10) ** 3 + (a // 10 % 10) ** 3 + (a // 100) ** 3 == a: print("是水仙花数")
|
5.2.2双分支结构 - 如果条件成立就执行某个操作,否则就执行另一个操作
1 2 3 4 5
| a = 1 if a == 1: print(True) else: print(False)
|
5.2.3多分支结构 - 如果条件成立就执行某个操作,否则判断另一个条件是否成立
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| age = 50 if age<14: print(age) print("儿童") elif age<18: print(age) print("青少年") elif age<26: print(age) print("青年") elif age<50: print(age) print("中年") else: print(age) print("老年")
|
练习1:判断分数等级
1 2 3 4 5 6 7 8 9
| score = 89 if score > 90: print("A") elif score >= 80: print("B") elif score >= 60: print("C") else: print("D")
|
二.作业
选择题
print(100 - 25 * 3 % 4)
应该输出什么? (B)
A. 1
B. 97
C. 25
D. 0
下列哪种说法是错误的(A)。
A. 除字典类型外,所有标准对象均可以⽤于布尔测试
B. 空字符串的布尔值是False
C. 空列表对象的布尔值是False
D. 值为0的任何数字对象的布尔值是False
下列表达式的值为True的是(B)。
A. 3>2>2
B. 1 and 2 != 1
C. not(11 and 0 != 2)
D. 10 < 20 and 10 < 5
Python不⽀持的数据类型有(A)。
A. char
B. int
C. float
D. list
(多选)n = 6784,以下能够获取到7 的⽅法有(C,D)。
A. n / 1000 % 100
B. n % 1000 / 100
C. n // 100 % 10
D. n // 10 % 100 // 10
运⾏以下程序,当从键盘上输⼊12,运⾏结果是(A)。
1 2
| x = (input()) print(type(x))
|
A. <class 'str'>
B. <class 'int'>
C. 出错
D. <class 'dict'>
下列表达式的运算结果是( D) 。
1 2 3
| a = 100 b = False print(a * b > -1)
|
A. False
B. 1
C. 0
D. True
填空题
- 查看变量中数据的类型的函数名是(type)。
- 已知 x = 3 == 3 ,执⾏结束后,变量x的值为(True)。
- 已知 x = 3 ,那么执⾏语句 x += 6 之后,x的值为(9)。
- 表达式 3 ** 2 的值为(9),表达式 3 * 2 的值为(6),表达式 4 ** 0.5 的值为(2.0)。
编程题
写出判断⼀个数是否能同时被2和5整除的条件语句, 并且打印对应的结果。
1 2 3 4 5
| num = 20 if num % 10 == 0: print(num,"能同时被2和5整除") else: print(num,"不能同时被2和5整除")
|
写出判断⼀个数是否能够被2或者5整除,但是不能同时被2或者5整除的条件语句, 并且打印对应
的结果。
1 2 3 4 5
| num = 20 if num % 10 !=0 and (num % 2==0 or num % 5==0): print(num,"能够被2或者5整除,但是不能同时被2或者5整除") else: print(num,"不满足能够被2或者5整除,但是不能同时被2或者5整除")
|
假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX
时XX分XX秒’的⽅式表示出来。
例如:100秒表示成 0时1分40秒
1 2 3 4 5
| time = 15678 hour = time // 3600 min = (time-hour*3600)//60 sec = time-hour*3600-min*60 print("今天上课时间为:",hour,"小时",min,"分钟",sec,"秒")
|
定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!
公式: 体重(kg) / (身⾼(m)的平⽅值 ) 在18.5 ~ 24.9之间属于正常。
输出格式: 是否正常:True/False
1 2 3 4 5 6
| kg = 70 m = 1.75 if 18.5<= (kg / m**2) <=24.9: print(True) else: print(False)
|
根据输入的成绩的范围打印及格
或者不及格
1 2 3 4 5 6 7
| score = 88 if score>=60: print(score) print("及格") else: print(score) print("不及格")
|
根据输入的年纪范围打印成年
或者未成年
,如果年龄不在正常范围内(0~150)打印这不是人!
1 2 3 4 5 6 7
| age = 18 if 0 <= age < 18: print("未成年") elif 18 <= age <=150: print("成年") else: print("这不是人!")
|
输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数
。
1 2 3 4 5 6
| a = 22 b = 9 if (a-b) % 2 !=0: print(a-b) else: print("a-b的结果不是奇数")
|