9.25 总结
9.22考试回顾
- 下面哪个选项输出的结果展示为10+20 (BC)
# A
print(10, 20, '+') # 10 20 +
# B
print(10, 20, sep='+') # 10+20
# C
print(10, end='+'); print(20) # 10+20
# D
print(10, '+', '20') # 10 + 20
- 下面哪个代码可以同时定义出a和b两个变量,并分别赋值为10与20 (BD)
# A
a = 10, b = 20 # python中赋值要换一行
# B
a, b = 10, 20
# C
a = (b = 20) - 10
# D
a = (b := 20) - 10
- 十六进制的符号集有:0 1 2 3 4 5 6 7 8 9 a b c d e f
- 汉字的unicode编码是从到:\u4e00 到、\u9fa5
- 有a = 18 与b = 20,使用三元运算符获取a与b中的最小值 a if a < b else b
- not 0的结果是True
- 错误嵌套:
# 题目:按照学生输入的绩点与平均成绩,判断学生的奖学金等级;如果绩点在4.5以上并且平均成绩在95以上,是一等奖学金5000元;如果绩点在4.5以上并且平均成绩在90以上,是二等奖学金3000元;如果绩点在4.3以上并且平均成绩在88以上,是三等奖学金1000元
# 正确示范:
a = float(input('输入绩点:'))
b = float(input('输入成绩:'))
if a > 4.5 and b > 95:
print('一等')
elif a > 4.5 and b > 90:
print('二等')
elif a > 4.3 and b > 88:
print('三等')
else:
print('没有奖学金')
# 错误示范:
gpa = float(input('输入绩点:'))
score = float(input('输入成绩:'))
if gpa > 4.5:
if score > 95:
print('一等')
elif score > 90:
print('二等')
elif gpa > 4.3 :
print('三等')
else:
print('没有奖学金')
# 输入一个月份,判断季节
month = int(input('输入一个月份:'))
if month in (1,2,3): #注意:此处的括号里面,有几个判断几个,表示的并不是从1-3;所以不能写为(1,3)
print('春')
elif month in (4,5,6):
print('夏')
elif month in (7,8,9):
print('秋')
elif month in (10,11,12):
print('冬')
else:
print('不是月份')
9.22 作业
- 上公交车,并且可以有座位坐下
1)输入公交卡当前的余额,
2)只要超过2元,就可以上公交车
3)如果车上有空座位,就可以坐下,否则站着乘车
# 方法2 :
money = float(input('公交卡余额:'))
if money > 2:
print('上公交车')
has_site = input('是否有座位:')
if has_site == '有':
print('坐着乘车')
else:
print('站着乘车')
else:
print('无法乘车,余额不足')
- 键盘输入一个四位数 判断是否位四叶玫瑰数
四叶玫瑰数的判断条件 各个位上的四次方的和 等于他本身
num4 = int(input('输入一个四位数 :'))
if num < 1000 or num > 9999:
print(num,'不是四叶玫瑰数')
else:
num11 = num4 % 10
num22 = num4 // 10 % 10
num33 = num4 // 100 % 10
num44 = num4 // 1000
if (num11**4 + num22**4 + num33**4 + num44**4) == num4:
print(f'{num4}为四叶玫瑰数')
else:
print(f'{num4}不是四叶玫瑰')
##注: num33 = num4 // 100 % 10 这里要考虑多位数的情况,比如要是四位数,不加 % 会得到两位数,无法取得十位数
num44 = num4 // 1000 此处直接整除是因为最高就四位,所以不用取余
- 输入三个整数x,y,z,请把这三个数由小到大输出
x = int(input('x:'))
y = int(input('y:'))
z = int(input('z:'))
if x > y and x > z and y > z:
print(z,y,x)
elif x > y and x > z and z > y:
print(y,z,x)
elif y > x and y > z and x > z:
print(z,x,y)
elif y > x and y > z and z > x:
print(x,z,y)
elif z > y and z > x and x > y:
print(y,x,z)
elif z > x and z > y and y > x:
print(x,y,z)
# 方式2 :思路:按照对比交换两个变量的值
# 让值交换之后 x获取最大值 y是中间值 z是最小值
x = int(input('x:'))
y = int(input('y:'))
z = int(input('z:'))
if x < y:
# 要让x和y交换位置
x, y = y, x
if x < z:
x, z = z, x
if y < z:
y, z = z, y
print(z, y, x)
range功能
用来产生等差数列的,这个结果也是容器型的一个数据,是range类型的
什么叫等差数列? 数据是递增或者递减 【递增或者递减的数据的差值-步长,在整个数据序列中是一致的】
注意:range只能产生整数的等差数列
格式1: range(stop结束值)
序列中的数值是从0开始步长为1的递增到stop[不包含]的数列
比如 range(10) ===> 0 1 2 3 4 5 6 7 8 9
格式2: range(start起始值, stop结束值)
序列中的数值是从start[包含]开始步长为1的递增到stop[不包含]的数列
比如: range(1, 11) ===> 1 2 3 4 5 6 7 8 9 10
格式3:range(start起始值, stop结束值, step步长)
step为正数 表示递增的数列 start < stop
step为负数 表示递减的数列 start > stop
从start[包含]开始 以步长 step 递增或者递减到 stop[不包含]的数列
比如: range(1, 11, 2) ===> 1 3 5 7 9
range(1, 100, 10) ====> 1 11 21 31 41 51 61 71 81 91 [可以理解为100以内 个位数为1的数据]
range(10, 0, -2) ====> 10 8 6 4 2
例题:
# 1.输入一个整数。计算这个数的阶乘,比如 5!=5 * 4 * 3 * 2 * 1
num = int(input('输入一个整数:'))
count = 1
for i in range(num, 0, -1): # 5 4 3 2 1
count *= i
print(count) # 负数没有阶乘
# 2.求1-100中个位数是3并且是9的倍数的累加和
count1 = 0
for s in range(1, 101):
if s % 10 == 3 and s % 9 == 0:
count1 += s
print(count1)
# 3.求1-100中是5的倍数,并且也是3的倍数的数据的个数
count3 = 0
for c in range(1,101):
if c % 3 == 0 and c % 5 == 0:
count3 += 1
print(count3)
==================================
# 如果想看数据,可以加print(c)
count3 = 0
for c in range(1,101):
if c % 3 == 0 and c % 5 == 0:
print(c)
count3 += 1
print(count3)
# 生成不一样的数列
# 数列中全是5的倍数,这个数列该怎么写?
for e1 in range(5, 101, 5):
if e1 % 3 == 0:
print(e1)
# 数列中全部是3的倍数 这个数列该怎么写?
for e2 in range(3, 101 ,3):
if e2 % 5 == 0:
print(e2)
# 数列中全部是15的倍数 这个数列该怎么写?[15是3和5的最小公倍数]
for e3 in range(15, 101, 15):
print(e3)
while循环
while 条件判断:
重复操作的代码块
重复操作,直至成功
num = 1
while num <= 10:
print(num)
num = num + 1 # num += 1
print('循环结束')
次数明确 用for – in --range即可
次数不明确,用while
练习
# 练习
# 1.折纸问题
# 一张纸厚度是0.08mm,问对折多少次,达到珠穆朗玛峰的高度8848.18M
# 注意单位换算 1m = 1000mm
num4 = 0.08
count4 = 0
while num4 <= 8848180:
num4 *= 2
count4 += 1
print(count4)
# 2.一个猴子吃桃子,第一天有2350个桃子,每天吃剩余桃子的一半多一个,问多少天后桃子吃完
num5 = 2350
count5 = 0
while num5 > 0:
num5 = num5 / 2 - 1
count5 += 1
print(count5)
beak、continue、pass
pass 是代码块占位符,代码块中不能空白的 【那块的逻辑暂时未写 可以使用pass占位】
break和continue都是应用于循环语句中的
- break 的作用是退出结束其所在的循环语句
- continue的作用是结束当前执行,回归到条件判断或者in 遍历操作的位置,检测条件是否成立或者容器是否还有数据,条件成立或者是容器中有数据,继续执行下一次,否则结束循环
写while循环的时候 这个条件实在是不知道怎么写
可以写成
while True: [死循环]
按照需求根据数据的变化使用break退出循环
# 青蛙从井底向上爬 井深10m 白天向上爬3m 晚上掉下去1m 问几天爬出来
# 重复的操作 爬+掉
deep = 10 # 井的深度
day1 = 0 # 爬的天数的记录者
while True:
day1 += 1 # 开始爬 进行计数
# 白天向上爬
deep -= 3 # 注意要有判断: 白天爬出来了
if deep <= 0:
break # 结束循环
# 晚上掉下去
deep += 1
print(day1)
continue 结束当前次 在判定条件是否开启下一次
需求: 打印1-10中的偶数
for e in range(1, 11):
# 打印的时候判断是否为偶数
if e % 2 == 0:
print(e)
print('========')
反向思维:可以判断是否为奇数 是奇数 跳过打印
for e1 in range(1, 11):
if e1 % 2: # 隐式布尔转换 按照布尔转换规则 非0即为True
# 跳过后面 不执行
continue
print(e1)
pass
占个位置,告诉计算机不要报错,继续执行
for ele in range(1, 100):
# 这里的内容没想好写什么 不能直接略过的
print('循环结束')
# 例如
for i in range(1,10):
print('快乐') # 此处没想好,可以用pass代替
print('循环结束)
% 2: # 隐式布尔转换 按照布尔转换规则 非0即为True
跳过后面 不执行
continue
print(e1)
[外链图片转存中...(img-y6SmSJ4P-1725213992790)]
### pass
占个位置,告诉计算机不要报错,继续执行
```python
for ele in range(1, 100):
# 这里的内容没想好写什么 不能直接略过的
print('循环结束')
# 例如
for i in range(1,10):
print('快乐') # 此处没想好,可以用pass代替
print('循环结束)