运算符和分支
逻辑运算符:and,or,not(用机器语言描述条件,生活中的条件有两种,单一条件或者复合条件)
复合条件构建方式(1、 并且的方式连接 - and 2、 或者的方式连接-or)
not 对条件表示否定
一. 逻辑运算符
1. and(逻辑与运算)
'''
1)应用场景:用来连接要求同时成立的两个条件,相当于生活中的并且
2)运算规则:条件1 and 条件2 - 两个条件都成立,结果都是True
True and True - True
True and False - False
False and True - False
False and False - False
'''
# 案例:判断num是否同时被3和7整除
num = 345
# num 是否能够被3整除:num % 3 == 0
# num 是否能够被7整除:num % 7 == 0
print('num是否同时被3和7整除:',num % 3 == 0 and num % 7 == 0)
# 练习1:判断 num 是否是能够被7整除的偶数
num = 34
print('num是否是能够被7整除的偶数:',num % 7 == 0 and num % 2 == 0)
# 练习2:判断 num 是否是个位数能被3整除的数
num1 = 109
print('num1是否是个位数能被3整除的数:',num1 % 10 % 3 == 0)
num2 = 109.9 # 和取余有关,不是整除
print('num2是否是个位数能被3整除的数:',int (num2 % 10) % 3 == 0)
2. or(逻辑或运算)
"""
1)应用场景:如果要求两个条件中有一个条件成立就行,就使用这个or来对这两个条件进行连接。
2)运算规则:条件1 or 条件2 - 只要有一个条件成立,结果就是True,否则结果是False
True or True - True
True or False - True
False or True - True
False or False - False
"""
# 练习1:判断num是否能够被3或者7整除
num = 23
print('num是否能够被3或者7整除:',num % 3 == 0 or num % 7 == 0)
# 练习2:判断year对应的年份是否是闰年
# 什么是闰年:闰年分为世纪闰年(能被400整除的年)和普通闰年(能被4整除但是不能被100整除的年
year = 2008
# 世纪闰年: year % 400 == 0
# 普通闰年: year % 4 == 0 and year % 100 != 0
print('year对应的年份是否是闰年:',year % 400 != 0 or (year % 4 == 0 and year % 100 != 0)) # True
3. not(逻辑非)
"""
1)应用场景:对条件进行否定的时候使用,相当于生活中的’不‘
2)运算规则:not 条件 - 对条件进行否定
not True - False
not False - True
"""
# 案例 1:判断age对应的值是否不大于18
age = 29
print(not age > 18)
print(age <= 18)
# 案例 2:判断num是否不是偶数
num = 29
print(not num % 2 == 0)
print(num % 2 != 0 )
print(num % 2 == 1)
# 案例 3:判断 num 是否不能同时被3和7整除
num = 23
print(not(num % 3 == 0 and num % 7 == 0))
# 逻辑整理:以上3案例,num 是否不能同时能被3和7整除:能被3整除但是不能被7整除、能被7整除但是不能被3整除、既不能被3整除也不能被7整除
num = 23
print('num是否不能同时被3和7整除:',(num % 3 == 0 and num % 7 != 0 ) or (num % 7 == 0 and num % 3 != 0 ) or (num % 3 != 0 and num % 7 != 0))
# num是否不能同时被3和7整除: True
# 能同时被3和7整除的数,一定能够被3和7的最小公倍数整除,3和7的最小公倍数是21
print(num % 21 != 0)
二. 赋值运算符
赋值运算符:=、+=、-=、*=、/=、%=、//=、=**
注意:不管是什么样的赋值运算符,最终的目的都是为了赋值,一个数据保存到变量中
1. =
变量名 = 数据 - 直接将指定数据保存到指定的变量中
注意:= 前面的变量名可以是没有定义过变量的变量,也可以是已经定义过变量的变量名
a = 10
b = 20
a = 100 # 重复赋值,是为最新的值
print(a)
2. +=
变量名 += 数据 - 先将变量中保存的数据取出来,和后面的数据进行加法运算,再将运算的结果保存到前面的变量中
注意:这的变量必须是已经定义(赋值)过的变量
b += 10
print(b) # b == 30
b -= 5
print(b) # b == 25
b %= 3
print(b) # b == 1
三. 运算符和优先级
python中不同的运算符的优先级不同,优先级高的运算符先算。
数学运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符(最低)
数学运算符:**(幂运算) > *、/ 、%、// > +、-
逻辑运算符:and > or
有括号先算括号里面的
四. 流程控制
流程控制 - 通过代码控制程序执行过程
根据代码执行过程的不同,可以将代码分为以下三种结构
- 顺序结构 - 代码从上往下一条一条执行,每条代码执行一次
- 分支结构(if) - 根据条件选择执行或者不执行相关代码
- 循环结构(for、while) - 代码写一遍,然后重复执行多次
print('你好')
age = 26
if age >= 18:
print('成年')
else:
print('未成年')
五.if分支结构
1. if 单分支结构:如果 xxx 就 xxx
条件成立执行某个操作,条件不成立这个操作就不执行
"""
1)语法
if 条件语句:
代码块
2)说明
if - 关键字,固定写法
条件语句 - 可以是如何有结果的表达式,一般判断语句
: - 固定写法(注意必须是英文输入法下面的冒号)
代码块 - 结构上是和if保持的一个缩进的一条或者多条语句(至少一条;)
逻辑上,代码块就是需要满足条件才执行的代码
"""
案例 1 :如果num是偶数就在控制台打印‘偶数’
num = 28
if num % 2 == 0:
print('偶数')
案例 2:根据score的值在控制台打印’不及格‘
score = 8
if score < 60:
print('不及格')
score = 89
if score < 60:
print('不及格')
else:
print('及格')
2.if双分支结构:如果xxx就xxx否则就xxx
条件成立执行某个操作,这个条件不成立的时候执行另外一个操作
"""
语法:
if 条件语句:
代码块1
else:
代码块2
代码块3(不管条件成立不成立都会执行)
"""
案例1:如果num是偶数就会在控制台打印’偶数‘,否则就打印’奇数‘
if num % 2 == 0
print('偶数')
else:
print('奇数')
案例2:根据score的值在控制台打印’不及格‘或者’及格‘
if score < 60
print('不及格')
else:
print('及格')
3.if多分支结构:如果 xxx 就 xxx,如果 xxx 就 xxx,如果 xxx 就 xxx,…
根据不同的条件做不同的事情
语法:
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3 # elif结构根据情况可以有多个
...
else:
代码块N # 可以有,也可以没有
执行过程:先判断条件1是否成立,如果成立直接执行代码块1然后整个分支结构结束;
如果条件1不成立才去判断条件2是否成立,成立就执行代码块2然后整个分支结构结束;
如果条件2不成立才去判断条件3是否成立......如果前面的条件都不成立,才会执行else后面的代码块。
总结:后面的条件是在前面的条件不成立的情况下进行判断的。
案例1:根据score的值打印学生的等级
# >=90 - A; 80 ~ 89 - B; 60 ~ 79- C; <60 - D
# 情况1:不考虑成绩不在有效范围内
score = 67
if score >= 90:
print('A')
elif 80 <= score <= 89:
print('B')
elif 60 <= score <= 79:
print('C')
elif score < 60:
print('D')
# 代码可以简化之后, 符合前一个条件,后面的范围可以逐步缩小
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 60:
print('C')
else:
print('D')
六.for循环
循环结构的作用:让代码重复执行
1. for循环
"""
1)语法:
for 变量 in 序列:
循环体
2)说明:
for - 关键词;固定写法
变量名 - 可以是任何变量的变量名
in - 关键字;固定写法
序列 - 任何容器型数据类型的数据。常见的序列:字符串、列表、字典、元组、集合、迭代器、生成器、range等
: - 固定写法
循环体 - 结构上,就是和for保持一个缩进的一条或者多条语句(至少一条)
逻辑上,循环体就是需要重复执行的代码。
补充:元素 - 一个容器可以同时保存多个数据,其中每一个独立的数据就是这个序列的元素
3)执行过程
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。
for循环的循环次数和序列中元素的个数有关
"""
for x in 'abc':
print(x)
print('hello world!')
print('你好')
作业题
-
写出判断⼀个数是否能同时被2和5整除的条件语句, 并且打印对应的结果。
num = int(input('请输入一个数:')) if num % 2 == 0 and num % 5 == 0: print(num, '该数字能同时被2和5整除') else: print(num, '该数字不能同时被2和5整除')
-
写出判断⼀个数是否能够被2或者5整除,但是不能同时被2或者5整除的条件语句, 并且打印对应。
num = int(input('请输入一个数字:')) if num % 2 == 0 and num % 5 != 0: print(num % 2, num % 5, '该数字能被2整除但是不能被5整除') elif num % 2 != 0 and num % 5 == 0: print(num % 2, num % 5, '该数字能被5整除但是不能被2整除' ) else: print('该数字不符合要求')
-
假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX时XX分XX秒’的⽅式表示出来。
例如:100秒表示成**
0时1分40秒
**a = 15678 h = a // 3600 m = (a-h * 3600)//60 s = a - h * 3600 - m * 60 print(h ,'时', m , '分', s , '秒')
-
定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!
公式:体重(kg) / (身⾼(m)的平⽅值) 在18.5 ~ 24.9之间属于正常。
输出格式:是否正常:True / False
h = float(input('请输入一个人的身高:')) w = float(input('请输入一个人的体重:')) bmi = w / (h ** 2) if 18.5 <= bmi <= 24.9: print('正常','True') else: print('不正常','False')
-
写程序判断指定的整数(num)是否是水仙花数。
水仙花:一个三位,其各个位数的立方和等于这个数本身,比如:153是水仙花数,因为1^3 + 5^3 + 3^3 等于153
num = int(input('请输入一个三位数:')) a = num // 100 b = num % 100 c = num % 10 if a ** 3 + b ** 3 + c ** 3 == num: print('该整数是水仙花数') else: print('该整数不是水仙花数')