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
相关推荐
UtopianCoding4 分钟前
什么是NoteDiscovery?Obsidian 的开源平替?
python·docker·开源
JIngJaneIL14 分钟前
基于java+ vue建筑材料管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
半梅芒果干19 分钟前
vue3 新建文件store自动导入
开发语言·前端·javascript
Tony Bai20 分钟前
Go 1.26 新特性前瞻:从 Green Tea GC 到语法糖 new(expr),性能与体验的双重进化
开发语言·后端·golang
别动哪条鱼21 分钟前
SDL 函数对各对象缓冲区的影响
网络·数据结构·ffmpeg
我一定会有钱24 分钟前
pytest基础
python·测试工具·测试用例·pytest
悟能不能悟31 分钟前
Java 中将 List 中对象的某一列转换为 Set
java·开发语言·list
vortex537 分钟前
Bash Shell 的展开与补全机制
开发语言·bash
云计算练习生38 分钟前
渗透测试行业术语扫盲(第十六篇)—— 红蓝对抗与演练类
网络·安全·网络安全·信息安全·渗透测试术语
快解析39 分钟前
内网穿透快解析注册后添加配置端口教程
linux·服务器·网络