10_作业
"""
1. 录入一个矩形的宽和高,求矩形的面积和周长
2. 录入一个圆的半径,求圆的周长和面积【圆周率使用3.14】
3. 录入一个人的身高(单位是m)与体重(单位是kg), 根据bmi=体重/(身高的平方),求出这个人的bmi值
4. 录入一个数,获取这个数对7的余数
5. 录入四个数据表示两个坐标点 前两个赋值给x1,y2 后两个赋值给x2,y2 求两点之间的距离 【公式为 (x1-x2)的平方+(y1-y2)的平方 对结果开方】
"""
# 录入一个矩形的宽和高,求矩形的面积和周长
width = float(input('矩形的宽:'))
height = float(input('矩形的长:'))
# 面积
area = height * width
print('面积是', area)
# 周长 提高运算符的优先级使用()包含
# 编码标准化: 选中代码 ctrl + alt + l 规范化代码
length = (height + width) * 2
print('周长:', length)
# 录入一个圆的半径,求圆的周长和面积【圆周率使用3.14】
radius = float(input('圆的半径:'))
# **的优先级别是最高的
area = 3.14 * radius ** 2
print('面积', area)
# 周长
lenght = 2 * 3.14 * radius
print('周长:', round(lenght, 2))
round 四舍五入 round(数据/变量, 保留小数的位数)
# 3. 录入一个人的身高(单位是m)与体重(单位是kg), 根据bmi=体重/(身高的平方),求出这个人的bmi值
height = float(input('身高(m):'))
weight = float(input('体重(kg):'))
bmi = weight / (height * height)
print('bmi', bmi)
# 4. 录入一个数,获取这个数对7的余数
num = int(input('录入一个整数:'))
print('余数:', num % 7)
# 5.录入四个数据表示两个坐标点 前两个赋值给x1,y2 后两个赋值给x2,y2
# 求两点之间的距离 【公式为 (x1-x2)的平方+(y1-y2)的平方 对结果开方】
x1 = int(input('x1:'))
y1 = int(input('y1:'))
x2 = int(input('x2:'))
y2 = int(input('y2:'))
distance = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** (1/2)
print('两点之间的距离:', distance)
11_算术运算符的优先级别
一元运算符 正负号 +17 -89
二元运算符
/ 或者 //
%
**
优先级别 **幂数 > 负号 > 乘、除、余 > 加减
提高运算符的优先级别 使用()包含 不管多少层都是()
print(-2 ** 2)
print((-2) ** 2)
print(-2 * -4)
print(-8 + -2 * -4)
12_复合赋值运算符
简单的赋值运算符
=
a = 10 [将等号右边的数据赋值给左边的变量名]
复合赋值运算符
在进行赋值的时候 先操作了算术运算
+=
-=
*=
/=
//=
%=
**=
num = 125
num -= 15 # ===> num = num - 15 = 125 - 15 = 110
print(num)
num %= 4 # ===> num = num % 4 = 110 % 4 = 2
print(num)
num **= 5
print(num) # ===> num = num ** 5
13_比较运算符
比较两个数据,判断大小
> 判断前者是否大于后者
>= 判断前者是否大于或者等于后者
< 判断前者是否小于后者
<= 判断前者是否小于等于后者
!= 判断前者是否不等于后者
比较运算符运行结果是布尔类型的,结果只有两个值True和False
算数运算符优先级别高于比较运算符
a = 17
b = 9
res = a + b > b * 2
print(res) # True
res = a - b <= a % b
print(res) # True
# 判断一个数据是否是偶数 偶数:能被2整除【除以2余数为0】
num = 17
res = num % 2 == 0
print(res) # False
# 判断一个数的个位数是否为7
# 获取数据的个位数???? 除以10 取余数 比如 17除以10 商1 余7 16除以10商1余6
res = num % 10 == 7
print(res) # True
# 如何获取十位上的数据????
- 可以将十位上的数 处理成个位上的数 ==== 整除10 245 // 10 = 24
- 将处理后的结果对10取余 24 % 10 = 4
# 判断一个数据是否是奇数 除以2余1
res = num % 2 == 1
print(res)
res = num % 2 != 0
print(res)
14_逻辑运算符
逻辑运算符是来操作逻辑关系的
-
逻辑与 and
连接的条件必须同时成立 【也就是条件之间是并且的关系】,结果才是成立的
-
逻辑或 or
链接的条件成立其中一个即可 【也就是条件之间的关系是或者关系】
-
逻辑非 not
对条件结果进行取反操作,真变假,假变真
比较运算符的优先级高于逻辑运算符
逻辑运算符中 not > and > or
"""
# 大学中评奖学金 平均成绩和绩点
# 平均成绩在90以上 并且 绩点在4.5以上
# 定义两个变量 表示成绩和绩点
score = float(input('请输入平均成绩:'))
gpa = float(input('请输入绩点:'))
res = score > 90 and gpa > 4.5
print(res)
"""
练习:
1. 输入一个数 判断这个数是否是3的倍数 并且也是7的倍数
2. 输入一个数 判断这个数的十位是否为2的倍数 并且 个位是否是3的倍数
"""
# 1. 输入一个数 判断这个数是否是3的倍数 并且也是7的倍数 倍数:整除【余数为0】
num = int(input('请输入一个整数:'))
res = num % 3 == 0 and num % 7 == 0
print(res)
# 因为找的是既是3的倍数 也是7的倍数 可以找两个最小公倍数 21
res = num % 21 == 0
print(res)
# 2. 输入一个数 判断这个数的十位是否为2的倍数 并且 个位是否是3的倍数
num = int(input('请输入一个整数:'))
decade = num // 10 % 10
unit = num % 10 # 个位上的数据是不足10 除以10会被余下的
# 加这个不等于0 考虑的是0不是任何数的倍数
res = (decade % 2 == 0 and decade != 0) and (unit % 3 == 0 and unit != 0)
print(res)
"""
逻辑或 or
条件1 or 条件2
其中一个条件成立即可
"""
# 判断一个年是否为闰年
"""
闰年:分为普通闰年和世纪闰年
普通闰年: 能被4整除但是不能被100整除 2020年
世纪闰年: 能被400整除 2000年
普通闰年和世纪闰年满足其中一个要求 就是闰年
"""
year = int(input('请输入年份:'))
common = year % 4 == 0 and year % 100 != 0
century = year % 400 == 0
res = common or century
res = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
print(res)
# 判断输入的月份是否是第三季度的 7月8月9月
month = int(input('月份:'))
res = month == 7 or month == 8 or month == 9
print('输入的月份是否是第三季度的结果:', res)
"""
1. 判断输入的数据是否是3或者5的倍数
2. 判断输入的月份的天数是否是30天
"""
num = int(input('请输入整数:'))
res = num % 3 == 0 or num % 5 == 0
print(res)
# 判断输入的月份的天数是否是30天
# 4 6 9 11
month = int(input('输入月份:'))
res = month == 4 or month == 6 or month == 9 or month == 11
print(res)
"""
逻辑非 not
对逻辑结果取反: not 条件
如果条件是成立的 not之后 结果就为False
如果条件是不成立的 not之后 结果就是True
"""
# 判断一个数是否为奇数
num = int(input('请输入整数:'))
num % 2 == 1
num % 2 != 0 # 不等于0 就是对等于0进行取反
res = not(num % 2 == 0)
print(res)
# 判断一个数是否能被3或者7整除 但是不能同时被3和7整除
num = int(input('请输入整数:'))
res = (num % 3 == 0 or num % 7 == 0) and not(num % 3 == 0 and num % 7 == 0)
print(res)
"""
练习:
1. 判断一个数是否不为正数
2. 输入一个月份 判断其是否在 1-12之间
"""
num = int(input('请输入整数:'))
res = not(num > 0)
print(res)
# 输入一个月份 判断其是否在 1-12之间
month = int(input('月份:'))
month >= 1 and month <= 12
res = not(month < 1 or month > 12)
print(res)
# 区间形式的范围判断 month >= 1 and month <= 12
# python可以对其进行简写
res = 1 <= month <= 12
print(res)
15_成员运算符
成员:众多中的一个
这个运算符是应用在容器型数据的元素判断的
判断数据是否在某个容器型数据中
整数、小数、布尔值、空值 每个数据都是独立的个体,浙西都不是容器型数据
10
3.14
True
None
字符串是一个容器型类型,元素是字符【长度为1的字符串称为字符,比如’a’,‘0’,’ '】
字符串就是由0个或多个字符拼接起来的
0个字符的情况下 称为空字符串 ’ ’ [是个空箱子]
成员运算符 in
格式:数据 in 容器型数据
逻辑:把数据当做一个整体,判断数据是否包含在容器中
格式:数据 not in 容器型数据
判断数据是否不在容器中
s = 'hello'
res = 'h' in s
print(res)
res = 'hl' in s
print(res)
res = 'hl' not in s
print(res)
16_流程控制语句
流程控制语句: 通过代码逻辑控制程序的执行流程
程序的流程有3种情况
1. 顺序结构语句, 特点:代码会从第一行到最后一行逐行运行【每条语句都会执行到】
2. 分支结构语句, 特点:按照逻辑条件满足与否,决定逻辑操作是否运行 【比如游戏星星数达到3颗才能进入下一关】
3. 循环结构语句, 特点:没有满足某个条件,就需要一直执行相应的逻辑操作
17_分支结构语句
分支结构语句又三种形态:
1. 单分支结构
在顺序流程过程中 监测数据是否达到某个状态点 如果达到这个状态点按照状态点的流程进行操作
如果没有达到的话 按照原流程进行操作
例如:
学校 — 回家
如果时间比较早 在6点之前到家 先去洗车 — 再回家
语法:
if 条件:
满足条件执行的操作
解读:如果条件满足 就执行相应的操作
注意:相应的操作的执行 要看条件是否满足 体现这种关系使用的是代码块包含的结构
Python中如何体现代码块包含:使用冒号+四个空格的缩进 【一般编辑器会默认一个tab键 就是四个空格】
2. 双分支结构
相当于十字路口,是向左还是向右
语法:
if 条件:
满足条件执行的操作
else:
不满足条件执行的操作
解读:
如果条件满足 做事情A 否则做事情B
3. 多分支结构
出现了3种及其以上的选择
语法:
if 条件1:
操作1
elif 条件2:
操作2
…
elif 条件n:
操作n
else :
以上条件都不满足 执行的操作
这个else语句可以省略
elif === else if
如果与否则是对立面,执行了如果 就不会执行否则
print('从学校出发')
# 需要记录当前的时间点
hour = 17
# 要求 时间在18点之前 进行洗车的操作
if hour < 18:
print('洗车店洗车')
print('回到家中')
# 简单双分支的例子
# 做一个成绩判定器: 判断输入的成绩是及格还是不及格
score = float(input('成绩:'))
if score >= 60:
print('及格')
else:
print('不及格')
# 多分支的案例
# 给成绩分等级
"""
>=90 A
>=80 B
>=70 C
>=60 D
<60 E
"""
score = float(input('请输入成绩:'))
if score >= 90:
print('A')
elif score >= 80: # score 肯定是小于90
print('B')
elif score >= 70: # score < 80
print('C')
elif score >= 60:
print('D')
else:
print('E')
练习:
- 超市活动,购买金额不足180,支付原金额,在180以上 打8折, 金额在300以上打6折
录入购买金额,计算出支付金额
2. 做一个数据比较器:根据输入的两个数 获取其中的最大值
3. 录入身高(单位是m)、体重(单位是kg),计算一个人的BMI值,判定身材状况
BMI小于 18.5 偏瘦
BMI在18.5到24.9之间正常
BMI大于24.9 偏胖
4. 模拟用户登录:录入用户名与密码,如果用户名为admin 密码为123456abc 则提示登录成功 否则提示登录失败
# 1. 超市活动,购买金额不足180,支付原金额,在180以上 打8折, 金额在300以上打6折
# 录入购买金额,计算出支付金额
money = float(input('请输入购买金额:'))
if money > 300:
payment = money * 0.6
elif money > 180:
payment = money * 0.8
else:
payment = money
print('支付金额为', payment)
# 2. 做一个数据比较器:根据输入的两个数 获取其中的最大值
num1 = float(input("a:"))
num2 = float(input('b:'))
if num1 > num2:
print('a比较大,a的值为', num1)
else:
print('b比较大,b的值为', num2)
# 3. 录入身高(单位是m)、体重(单位是kg),计算一个人的BMI值,判定身材状况
BMI小于 18.5 偏瘦
BMI在18.5到24.9之间正常
BMI大于24.9 偏胖
height = float(input('身高(m):'))
weight = float(input('体重(kg):'))
bmi = weight / height ** 2
if bmi < 18.5:
print('偏瘦')
elif bmi <= 24.9:
print('正常')
else:
print('偏胖')
# 4. 模拟用户登录:录入用户名与密码,如果用户名为admin 密码为123456abc 则提示登录成功 否则提示登录失败
username = input('用户名:')
password = input('密码:')
if username == 'admin' and password == '123456abc':
print('登录成功')
else:
print('登录失败')
分支语句嵌套
在满足某个条件的基础上还需要再次进行逻辑判断
"""
需求:
计算加油的金额
因为油号不同 价格不同 优惠也是不一样
92 单价8元/L 添加30L及其以上 打8折 否则按照原价处理
95 单价8.8元/L 添加25L及其以上 打8折 否则按照原价处理
98 单价9.5元/L 添加20L及其以上 打9折 25L及其以上8.5折 30L及其以上8折 否则按照原价处理
"""
oil_num = int(input('请输入油号:'))
litre = float(input('加油的升数(L): '))
# 判断油号
if oil_num == 92:
if litre >= 30:
payment = 8 * litre * 0.8
else:
payment = 8 * litre
elif oil_num == 95:
# pass # 代码块必须有内容 当前没有写逻辑可以使用pass占位
if litre >= 25:
payment = 8.8 * litre * 0.8
else:
payment = 8.8 * litre
else:
# pass # 空白代码块的占位符
# if litre >= 30:
# payment = 9.5 * litre * 0.8
# elif litre >= 25:
# payment = 9.5 * litre * 0.85
# elif litre >= 20:
# payment = 9.5 * litre * 0.9
# else:
# payment = 9.5 * litre
if litre < 20:
payment = 9.5 * litre
elif litre < 25:
payment = 9.5 * litre * 0.9
elif litre < 30:
payment = 9.5 * litre * 0.85
else:
payment = 9.5 * litre * 0.8
print(oil_num, '号油添加', litre, '升的油价是', payment)
18_循环结构语句
循环:周而复始 重复做同一件事
一直重复操作,没有终止,在编程里称为死循环 【在程序中是要避免的 — 程序卡死】
常见的循环结束状态:
1. 循环满N次 比如:体育测试:围着操场跑满5圈
2. 循环达到某个条件 比如: 体育测试:跑满1000米
Python提供的循环操作,有两个结构:
-
for-in循环,适合于循环满N次的情景
本质上是在遍历[逐个获取]容器型数据,在遍历获取元素的过程中进行相应的逻辑判断
容器中有几个元素,这个循环就执行几次
语法:
for 变量名 in 容器型数据:
循环体
解读:
in 可以理解成进入容器中拿元素数据
变量名 in进入拿到数据之后 赋值给变量名 循环结束点: in到容器中 没有数据可拿的时候 循环结束
-
while循环
"""
s = 'hello'
# 逐个将字符串s中的元素取出来
for ch in s:
print(ch)
# print('跑了一圈')
# 获取字符串中小于l的字符
# 逻辑 获取到元素之后 要对其进行判断 判断是否是小于l的
for ch1 in s:
if ch1 < 'l':
print(ch1)
# 假如跑100圈 使用循环的时候 可以使用range快速生成一个等差数列
"""
range(stop)
设定一个结束值, 等差数列是从0开始 步长为1 到stop[不包含]结束
range(10) ====> 0 1 2 3 4 5 6 7 8 9
range(start, stop)
设定了起始值和结束值 等差数列是从start[包含]开始 步长为1 到stop[不包含]结束
range(1, 11) ====> 1 2 3 4 5 6 7 8 9 10
range(start, stop, step)
step步长
正数 --- 生成的是递增的等差数列 要求 起始值<结束值
负数 --- 生成的是递减的等差数列 要求 起始值>结束值
stop结束位置[不包含]
start开始位置[包含]
range(1, 10, 2) ====> 1 3 5 7 9
range(10, 0, -2) ====> 10 8 6 4 2
range(100) ===> 0-99
"""
for ele in range(1, 101):
print('跑第', ele, '圈')
for ele1 in range(0, 100, 5):
print(ele1)