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:17if 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)
python">x = 4 y = 1 if x > 2:if y > 2:print(x + y)print("韩顺平教育~") # 输出 else:print("x is ", x)
题目2:编写程序,定义2个整数变量并赋值,判断两数之和,如果大于等于50,打印"“hello world!”
python">a = 10 b = 80 if a + b > 50:print("hello world")
题目3:编写程序,定了2个float型变量并赋值,如果第一个数大于10.0,且第2个数小于20.0,打印两数之和
python">num1 = 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 和 num22、判断他们的值是否能被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、定义变score2、根据成绩进行判断,输出相应提示信息即可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,handsome2、根据输入+题给出的判断条件,进行多分支进行判断,输出相应提示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:35nums = [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)# 演示一把breakif 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、定义变量i2、使用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:23i = 0
while i < 3:print("hello,python", i)i += 1if 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,个数count2. 循环判断9的倍数 i % 9 == 03. 计算总和 sum += i
"""i = 1
max_num = 100
sum = 0
count = 0
while i < max_num:if i % 9 == 0:sum += icount += 1# 记得一定要加1i += 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 = 02. 遍历0-num.第一个加数是0-num,第二个加数是 num-03. 使用while循环完成
"""
num = int(input("请输入一个整数:"))
i = 0
while i <= num:print(f"{i} + {num - i} = {num}")i += 1