Python | 第六章节 | 控制结构

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基本语法说明
  1. if 、 else是关键字,是规定好的
  1. 当条件表达式成立,即执行代码块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 和 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

一、注意事项和细节

  1. 循环时,依次将序列中的值取出赋给变量。
  2. 如需要遍历数字序列,可以使用内置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
相关推荐
hellojackjiang201113 分钟前
开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布
网络·即时通讯·im开发·mobileimsdk-鸿蒙端
煤泥做不到的!39 分钟前
挑战一个月基本掌握C++(第十一天)进阶文件,异常处理,动态内存
开发语言·c++
F-2H41 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
WebDeveloper20011 小时前
如何使用美国域名中心US Domain Center和WordPress创建商业网站
运维·服务器·css·网络·html
bryant_meng2 小时前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
车载诊断技术2 小时前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
若亦_Royi2 小时前
C++ 的大括号的用法合集
开发语言·c++
KevinRay_2 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack3 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站3 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机