P50 位运算(2) 2024/8/17
一、剩余运算符号
1、<< 左移
- <<规则 : 运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,符号位不变 ,高位丢弃,低位补0(左移相当于乘以2)
python
# 5 << 1 =?
补码:0000 0101
5 << 1 ---> 0000 1010 补码--->10
# -5 << 1 =?
原码:1000 0101
反码:1111 1010
补码:1111 1011
-5 << 1 ---> 1111 0110 补码---> 1111 0101反码--->1000 1010 --->-10
2、>> 右移
- 规则 : 把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数,低位溢出,符号位不变,并用符号位补溢出的高位。
python
# -5 >> 1 =?
原码:1000 0101
反码:1111 1010
补码:1111 1011
# 5 >> 1 =?
补码:0000 0101
5 >> 1 ---> 0000 0010 补码--->2 # 5 // 2 相当于整除
# -5 >> 1 =?
原码:1000 0101
反码:1111 1010
补码:1111 1011
-5 >> 1 ---> 1111 1101--->1111 1100--->1000 0011--->-3
P51 顺序控制 2024/8/18
一、基本介绍
程序流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句
1)顺序控制
- 程序从上到下逐行地执行,中间没有任何判断和跳转
2)分支控制
3)循环控制
P52 单分支 2024/8/18
一、基本语法
单分支是通过if语句来实现的, if语句的基本语法如下:
if
条件表达式:
代码块(可以有多条语句)
- if基本语法说明 :
1、当条件表达式为True 时,就会执行代码块;如果为False,就不执行
2、Python缩进非常重要 ,是用于界定代码块的,相当于其他编程语言里的大括号{ }
python
# @Author :zjc
# @File :01_if_detail.py
# @Time :2024/8/18 10:17
if 4 < 1:
print("ok 1")
print("ok 2")
print("ok 3")
3、最短的缩进对较长的有包含关系,缩进前后没有要求 ,但是每个代码块应具有相同的缩进长度(TAB或者相同个数的空格)
python
if 100 > 20:
print("ok4")
print("ok5")
if 8 > 2:
print("ok6")
案例演示 :
请编写一个程序,可以输入人的年龄,如果该小伙伴的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责!"
python
"""
思路分析:
1. 定义变量age,接收用于输入(注意要转成整数)
2. 用于if判断
"""
age = int(input("请输入你的年龄:"))
if age > 18:
print("你年龄大于18,要对自己的行为负责!")
二、示意图
P53 双分支 2024/8/18
一、基本语法
if 条件表达式**:**
执行代码块1
else:
执行代码块2
- if - else基本语法说明
- if 、 else是关键字,是规定好的
- 当条件表达式成立,即执行代码块1,否则执行代码块2,注意,不要少写了冒号:
应用案例:
- 编写一个程序,可以输入人的年龄,如果该小伙伴的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责!"。
- 否则,输出"你的年龄不大,这次放过你"
python
# @Author :zjc
# @File :02_if_else_detail.py
# @Time :2024/8/18 11:30
# 编写一个程序,可以输入人的年龄,如果该小伙伴的年龄大于18岁,则输出"你年龄大于18,要对自己的行为负责!"。
# 否则,输出"你的年龄不大,这次放过你"
"""
思路分析:
1. 定义变量age,接收用于输入(注意要转成整数)
2. 用于if-else判断
"""
age = int(input("请输入你的年龄:"))
if age > 18:
print("你年龄大于18,要对自己的行为负责!")
else:
print(5"你的年龄不大,这次放过你")
二、示意图
三、单分支和双分支练习题
题目1:对下列代码,若有输出,指出输出结果(2min)
pythonx = 4 y = 1 if x > 2: if y > 2: print(x + y) print("韩顺平教育~") # 输出 else: print("x is ", x)
题目2:编写程序,定义2个整数变量并赋值,判断两数之和,如果大于等于50,打印""hello world!"
pythona = 10 b = 80 if a + b > 50: print("hello world")
题目3:编写程序,定了2个float型变量并赋值,如果第一个数大于10.0,且第2个数小于20.0,打印两数之和
pythonnum1 = 3.0 num2 = 15.5 if num1 > 10.0 and num2 < 20.0: print("两数之和:",num1 + num2) print(f"两数之和:{num1 + num2}")
题目4:定义两个变量int类型,判断二者的和,是否能被3又能被5整除,打印提示信息
python""" 思路分析: 1、定义num1 和 num2 2、判断他们的值是否能被3和整除 3、然后输出结果 """ num1 = 0 num2 = 15 sum = num1 + num2 if (sum % 3)==0 and (sum % 5)==0: print(f"{num1}+{num2}的和能被3整除也能被5整除") else: print("不能被整除")
题目5:判断一个年份是否是闰年,闰年的条件是符合下面二者之一:(1)年份能被4整除,但不能被100整除(2)能被400整除
python""" 思路分析: 1、定义变量输入年份 2、判断年份是否能被满足条件:(year%4==0 and year%100!=0) or year%400==0 """ year = int(input("请输入年份:")) if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: print(f"{year}是闰年") else: print(f"{year}不是闰年")
P54 多分支 2024/8/22
一、基本介绍
基本语法:
if 条件表达式1**😗*
执行代码块
elif 条件表达式2**😗*
执行代码块2
......
else:
执行代码块n+1
示意图:
案例演示:
python
# @Author :zjc
# @File :04_if_elif_else.py
# Time :2024/8/22 19:53
"""
小头儿子参加python考试,他和大头爸爸达成承诺:如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone13;
当成绩为[60,80]时,奖励一个iPad;其它时,什么奖励也没有。
请从键盘输入小头儿子的期末成绩,并加以判断
"""
"""
思路分析:
1、定义变score
2、根据成绩进行判断,输出相应提示信息即可
3、使用多分支搞定
"""
score = int(input("请输入成绩:"))
if 0 <= score <= 100:
# 在Python中支持这种简化链式比较
if score == 100:
print("奖励一辆BMW")
elif 80 < score <= 99:
print("奖励一台iphone13")
elif 60 <= score <= 80:
print("奖励一个iPad")
else:
print("什么奖励也没有")
else:
print("请重新输入!不在0-100之间")
- 分析下面代码输出结果:# b
二、课后练习
- 题目一:
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
高: 180cm 以上;
富:财富1千万以上;
帅:是。条件从控制台输入。
如果这三个条件同时满足,则:"我一定要嫁给他!"
如果三个条件有为真的情况,则:"嫁吧,比上不足,比下有余。"
如果三个条件都不满足,则:"不嫁!"
python
# @Author :zjc
# @File :05_id_elif_else_exrcise.py
# Time :2024/8/22 20:28
"""
思路分析:
1、 定义三个变量height,,money,handsome
2、根据输入+题给出的判断条件,进行多分支进行判断,输出相应提示
3、使用if-elif-else
"""
height = float(input("身高:"))
money = float(input("钱(万):"))
handsome = input("颜值(帅,不帅:)")
if height > 180 and money > 10000000 and handsome == "帅":
print("我一定要嫁给他!")
elif height > 180 or money > 10000000 or handsome == "帅":
print("嫁吧,比上不足,比下有余!")
else:
print("不嫁!")
P55 嵌套分支 2024/8/25
一、基本介绍
-
基本介绍
1)嵌套分支:在一个分支结构中又嵌套了另一个分支结构
2)里面的分支的结构称为内层分支 ,外面的分支结构称为外层分支
3)规范: 不要超过3层(可读性不好)
二、案例演示
1、参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组,输入成绩和性别,进行判断和输出信息。
python
# @Author :zjc
# @File :06_if_else_inherent.py
# Time :2024/8/25 15:42
# 参加歌手比赛,如果初赛成绩大于8.0进入决赛,否则提示淘汰。
# 并且根据性别提示进入男子组或女子组,输入成绩和性别,进行判断和输出信息。
"""
思路分析:
1、定义两个变量score,gender接收用户的接入
2、score接收成绩,然后使用if-else判断,是否进入决赛
3、如果进入决赛接收性别,再使用if-else判断,是进入男子组还是女子组
"""
score = float(input("请输入初赛成绩:"))
if score > 8.0:
print("进入决赛")
gender = input("请输入性别:(男/女):")
if gender == "男":
print("进入男子组!")
else:
print("进入女子组!")
else:
print("您被淘汰了")
2、出票系统:根据淡旺季的月份和年龄,打印票价[课后练习]
4-10旺季:
成人(18-60): 60
儿童(<18):半价
老人(>60): 1/3
淡季:
成人:40
其他:20
python
# @Author :zjc
# @File :07_nested_if_else_exercise.py
# Time :2024/8/25 16:03
"""
思路分析:
1、定义变量季节,年龄
2、先判断月份淡旺季
3、里面嵌入多分支判断票价
"""
month = int(input("请输入月份:"))
age = int(input("请输入年龄:"))
if 4 < month < 10: # 旺季
if age < 18:
print("票价为:", 60 / 2)
elif 18 <= age <= 60:
print("票价为:", 60)
else:
print("票价为:", 60 / 3)
else: # 淡季
if 18 <= age <= 60:
print("票价为:", 40)
else:
print("票价为:", 20)
P56 for 循环(1)2024/8/28
一、问题提出
实际需求:
编写一个程序,可以打印10句"你好,韩顺平教育!"。请大家想想怎么做?
二、基本介绍
- for循环-基本介绍
for循环听其名而知其意,就是让你的代码可以循环的执行,是通过for语句来实现的
- 基本语法:
for <变量> in <范围/序列>:
<循环操作语句>
- for基本语法说明
1、for . in是关键字,是规定好的
2、<范围/序列>可以理解要处理的数据集,需要是可迭代对象(比如字符串,列表等...)
3、循环操作语句,这里可以有多条语句,也就是我们要循环执行的代码,也叫循环体
4、python的for循环是一种**"轮询机制"**,是对指定的数据集,进行"轮询处理"
案例演示:
python
# @Author :zjc
# @File :08_for_1.py
# Time :2024/8/28 15:45
# 编写一个程序,可以打印10句"你好,韩顺平教育!"。请大家想想怎么做?
# 定义一个列表(后面会详细介绍),可以视为一个数据集
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(nums, type(nums)) # <class 'list'>
# 每次循环的时候,依次将nums中的值取出赋值给i
# for i in [1,2,3,4,5]:这样直接写列表也是可以的
for i in nums:
print("你好,Python", i)
- for循环控制流程图:
- 内存示意图:
- 驻留机制相同字符串的地址不变:
python
# @Author :zjc
# @File :09_test_for.py
# Time :2024/8/28 18:35
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(nums, id(nums), nums[0], id(nums[0]))
print(nums, id(nums), nums[1], id(nums[1]))
print(nums, id(nums), nums[2], id(nums[2]))
# Python中的数据相同,根据驻留机制,会发现1的地址和nums[0]一样
print(id(1))
P57 for 循环(2)2024/8/29
一、注意事项和细节
- 循环时,依次将序列中的值取出赋给变量。
- 如需要遍历数字序列,可以使用内置range()函数 ,它会生成数列。range()生成的数列是前闭后开。
代码演示:
python
# @Author :zjc
# @File :010_for_02.py
# Time :2024/8/29 11:25
# range函数的解读class range(stop)
# class range(stat, stop, step=1)
# 1.虽然被称为函数,但range实际上是一个不可变的序列类型
# 2. range 默认增加的步长step是1,也可以指定,start 默认是E
# 3.通过list()可以查看range()生成的序列包含的数据
# 4. range()生成的数列是 前闭后开 range(1,5)相当于[1,5)
# 1.需求:生成一个[1,2,3,4,5]
# r1 = range(1, 6, 1)
r1 = range(1, 6)
print("r1 = ", list(r1)) # 使用list来输出
# 2. 需求:生成一个[0,1,2,3,4,5]
# r2 = range(0, 6)
r2 = range(6) # 等价
print("r2 = ", list(r2))
# 3.需求:生成一个[1,3,5,7,9]
r3 = range(1, 10, 2)
print("r3 = ", list(r3))
# 4.需求使用for+range方式输出10句"hello, python"
# for i in range(1, 11):
for i in range(10):
print("hello,python", i)
# hello,python 9 输出到9
二、for 和 else 可以配合使用
这里先给大家演示一下,后面学习了break,再回头加强一下
语法格式:
代码演示:
python
# @Author :zjc
# @File :011_for_else_exercise.py
# Time :2024/8/29 11:43
# for-else使用案例
nums = [1, 2, 3]
for i in nums:
print("你好,韩顺平教育", i)
# 演示一把break
if i == 2:
break # 中断提前结束
else:
print("没有循环数据了..")
题目练习:
解答:依次输出列表中的字符串
P58 while 循环(1)2024/8/29
一、基本介绍
while循环用于在表达式为真的情况下,重复的(循环的)执行,是通过while语句来实现的。
- 基本语法
- 案例演示:
python
# @Author :zjc
# @File :012_while_01.py
# Time :2024/8/29 11:56
# 使用while循环完成十句
"""
思路分析:
1、定义变量i
2、使用while 循环判断i<=10,如果为真就执行"hello,python"
3、注意i的值,要不断地增加 i +=1
"""
i = 1
while i <= 10:
print("hello,python", i)
i += 1
- 流程图:
- 内存分析:
P59 while 循环(2) 2024/8/29
一、注意事项和细节说明
1、while可以和 else配合使用
1)老韩说明:这里先给大家演示一下,后面学习了break,再回头加强一下
2)语法格式
解读 : 在 while ... else判断条件为 false时,会执行else 的语句块,即:在遍历过程中,没有被打断(解释:比如没有执行到break语句)
代码演示:
python
# @Author :zjc
# @File :013_while_02.py
# Time :2024/8/29 16:23
i = 0
while i < 3:
print("hello,python", i)
i += 1
if i == 1:
break
else:
print("i < 3 不成立i = ",i)
二、课堂练习题
1、打印1-100之间所有能被3整除的数
python
# @Author :zjc
# @File :014_while_exercise_011.py
# Time :2024/8/29 16:28
# 1、打印1-100之间所有能被3整除的数
"""
思路分析:
1. 定义变量i = 1,定义最大值max_num = 100,遍历的范围
2. 如果i % 3 == 0,说明i是可以被3整除的
3. 满足条件即可
4. 自增i
"""
# 1、while循环
i = 1
while i < 100:
if i % 3 == 0:
print(i,)
i += 1
# 2、for循环
for i in range(1, 100):
if i % 3 == 0:
print(i)
2、打印40-200之间所有的偶数
python
# @Author :zjc
# @File :015_while_exercise_02.py
# Time :2024/8/29 16:37
# 2、打印40-200之间所有的偶数
# 1、while循环
i = 40
max_num = 200
while i < 200:
if i % 2 == 0:
print(i)
i += 1
# 2、for循环
for i in range(40, 200, 2):
print(i)
3、不断输入姓名,直到输入"exit"为止
python
# @Author :zjc
# @File :016_while_exercise_03.py
# Time :2024/8/29 18:58
# 3、不断输入姓名,直到输入"exit"为止
"""
思路分析:
1. 定义变量name 接收用户输入
2. 使用while判断 ,如果name != "exit"就循环的输入
"""
name = ""
while name != "exit":
name = input("请输入姓名")
print("输入的内容是:", name)
4、打印1-100之间所有是9的倍数的整数,统计个数及总和
python
# @Author :zjc
# @File :017_while_exercise_04.py
# Time :2024/8/29 19:09
# 4、打印1-100之间所有是9的倍数的整数,统计个数及总和
"""
思路分析:
1. 定义变量i,和max_num=100,总和sum = 0,个数count
2. 循环判断9的倍数 i % 9 == 0
3. 计算总和 sum += i
"""
i = 1
max_num = 100
sum = 0
count = 0
while i < max_num:
if i % 9 == 0:
sum += i
count += 1
# 记得一定要加1
i += 1
print("1-100中9的倍数的总和:%d 个数为%d" % (sum,count))
5、完成下面表达式的输出
python
# @Author :zjc
# @File :018_while_exercise_05.py
# Time :2024/8/29 19:21
"""
思路分析:
1. 定义一个变量,接受用户的整数,定义一个i = 0
2. 遍历0-num.第一个加数是0-num,第二个加数是 num-0
3. 使用while循环完成
"""
num = int(input("请输入一个整数:"))
i = 0
while i <= num:
print(f"{i} + {num - i} = {num}")
i += 1