第三课的笔记

本文介绍了Python中的算术运算符优先级,复合赋值运算符,比较运算符,逻辑运算符,以及流程控制中的分支和循环结构,包括if-else、for和while语句的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三课的笔记

1.算术运算符的优先级别

"""
一元运算符 正负号 +17 -89
二元运算符
    +
    -
    *
    /或者//
    %
    **

优先级别 **幂数 > 符号 > 乘、除、余 > 加、减
提高运算符的优先级别 使用()包含 不管多少层都是()
"""

print(-2 ** 2)
print((-2) ** 2)

print(-2 * -4)
print(-8 + -2 * -4)


2.复合赋值运算符

"""
简单的赋值运算符
   =
     a = 10 [将等号右边的数据赋值给左边的变量名]
复合赋值运算符
   在进行复制的时候 先操作了算数运算
    +=
    -=
    *=
    /=
    //=
    %=
    **=

"""
num = 125
num -= 15 # ===> num = num - 15 = 125 - 15 = 110
print(num)

num %= 4 # ===> num = num % 4 = 110 % 4 = 2
print(num)

num **= 5
print(num) # ===> num = num ** 5

3.比较运算符

"""
比较运算符
   比较两个数据,判断大小
       >  判断前者是否大于后者
       >=  判断前者是否大于或者等于后者
       <  判断前者是否小于后者
       <=  判断前者是否小于等于后者
       ==  判断前者是否等于后者
       != 判断前者是否不等于后者
    比较运算符运行结果是布尔类型的,结果只有两个值True和False

    算术运算符优先级别高于比较运算符
"""
a = 17
b = 9

res = a + b > b * 2
print(res) #True

res = a - b <= a % b
print(res) #True

#判断一个数据是否是偶数 偶数:能被2整除【除以2余数为0】
num = 17
res = num % 2 == 0
print(res)

#判断一个数的个位数是否为7
#获取数据的个位数???? 除以10 取余数 比如17除以10 商1 余7  16除以10 商1余6
res = num % 10 == 7
print(res) #True

#如何获取十位上的数据???
"""
可以将十位上的数 处理成个位上的数  ==== 整除10  245//10 = 24
结果对10取余 24 % 10 = 4
"""

#判断一个数据是否是奇数 除以2余1
res = num % 2 == 1
print(res)

res = num % 2 != 0
print(res)

4.逻辑运算符

"""
逻辑运算符是来操作逻辑关系的
    逻辑与and
        连接的条件必须同时成立【也就是条件之间是并且的关系】,结果才是成立的
    逻辑或or
        连接的条件成立其中一个即可【也就是条件之间是或者关系】
    逻辑非not
        对条件结果进行取反操作,真变假,假变真

"""
#大学中评奖学金 平均成绩和绩点
#平均成绩在90以上 并且 绩点在4.5以上
#定义两个变量 表示成绩和绩点
score = float(input('请输入平均成绩:'))
gpa = float(input('请输入绩点:'))
res = score > 90 and gpa > 4.5
print(res)

"""
练习
    1.输入一个数 判断这个数是否是3的倍数 并且也是7的倍数
    2.输入一个数 判断这个数的十位是否为2的倍数 并且 个位是否是3的倍数
"""

#倍数:整除【余数为0】
num = int (input('请输入一个数:'))
res = num % 3 == 0 and num % 7 == 0
print(res)
#因为找的既是3的倍数 也是7的倍数 可以找两个最小公倍数21
res = num % 21 == 0
print(res)

num = int (input('请输入一个整数:'))
decade =  num // 10 % 10  #十位 除10余10
unit = num % 10  #个位上的数据是不足10 除以10 会被余下的
#加这个不等于0 考虑的是0不是任何数的倍数
res = (decade % 2 == 0 and decade != 0)  and (unit % 3 == 0 and unit !=0)
print(res)


"""
逻辑或 or
    条件1 or 条件2
    其中一个条件成立即可
"""
#判断一个年是否为闰年
"""
闰年:分为普通闰年和世纪闰年
    普通闰年:能被4整除但是不能被100整除  2020年
    世纪闰年:能被400整除  2000年

    普通闰年和世纪闰年满足其中一个要求 就是闰年

"""
year = int(input('请输入年份:'))
# common = year % 4 == 0 and year % 100 != 0
# century = year % 400 ==0
# res = common or century
res = (year % 4 ==0 and year % 100 != 0 ) or (year % 400 ==0)
print(res)

#判断输入的月份是否是第三季度的 7月8月9月
month = int(input('月份:'))
res = month == 7 or month == 8 or month == 9
print('输入的月份是否是第三季度的结果:',res)

"""
1.判断输入的数据是否是3或者5的倍数
2.判断输入的月份的天数是否是30天
"""
num = int (input('请输入一个数:'))
res = num % 3 == 0 or num % 5 == 0
print(res)

month = int(input('月份:'))
res = month == 4 or month == 6 or month == 9 or month == 11
print('输入的月份是否是30天:',res)

5.成员运算符

"""
成员运算符
    成员:众多中的一个
    这个运算符是应用在容器型数据的元素判断的
    判断数据是否在某个容器行数据中

    整数、小数、布尔值、空值 每个数据都是独立的个体,这些都不是容器型数据
       10
       3.14
       True
       None
    字符串是一个容器型类型,元素是字符【长度为1的字符串成为字符,比如'a','0',' '】
        字符串就是由0个或者多个字符拼接起来的
            0个字符的情况下 称为空字符串  ''  [是个空箱子]
    成员运算符 in
        格式:数据 in 容器型数据
        逻辑:把数据当作一个整体 ,判断数据是否包含在容器中
        格式:数据not in 容器型数据
            判断数据 not in 不在容器中


"""
s = 'hello'
res = 'h' in s
print(res)

6.流程控制语句

"""
流程控制语句 :勇敢代码逻辑控制程序的执行流程

程序的流程有3种情况
    1.顺序结构语句,特点:代码会从第一行到最后一行逐行运行【每条语句都会执行到】
    2.分支结构语句,特点:按照逻辑条件满足是否,决定逻辑操作是否运行【比如游戏星星数达到3颗才能进入下一关】
    3.循环结构语句,特点:没有满足某个条件
"""

7.分支结构语句

"""
分支结构语句有三种形态:
1. 单分支结构
        在顺序流程过程中 检测数据是否达到某个状态点 如果达到这个状态点按照状态点的流程进行操作
        如果没有达到的话 按照原流程进行操作

        例如:
            学校 --- 回家
            如果时间比较早 在6点之前到家  先去洗车 ---再回家

        语法:
            if 条件:
                满足条件执行的操作
        解读: 如果条件满足 就执行相应的操作
        注意: 相应的操作的执行 要看条件是否满足 体现这种关系使用的是代码块包含的结构
        Python中如何体现代码块包含:  使用冒号+四个空格的缩进  【一般编辑器会默认一个tab键 就是四个空格】

2. 双分支结构
        相当于十字路口,是向左还是向右
        语法:
            if 条件:
                满足条件执行的操作
            else:
                不满足条件执行的操作
        解读:
            如果条件满足 做事情A  否则做事情B

3. 多分支结构
        出现了3种及其以上的选择
        语法:
            if 条件1:
                操作1
            elif 条件2:
                操作2
            ...
            elif 条件n:
                操作n
            else:
                以上条件都不满足 执行的操作

        这个else语句可以省略
        elif  ==== else if
        如果与否则是对立面, 执行了如果 就不会执行否则
"""

print('从学校出发')

# 需要记录当前的时间点
hour = 17
# 要求 时间在18点之前 进行洗车的操作
if hour < 18:
    print('洗车店洗车')

print('回到家中')



# 简单双分支的例子
# 做一个成绩判定器: 判断输入的成绩是及格还是不及格
score = float(input('成绩:'))
if score >= 60:
    print('及格')
else:
    print('不及格')



# 多分支的案例
# 给成绩分等级
"""
    >=90  A
    >=80  B
    >=70  C
    >=60  D
    <60   E
"""
score = float(input('请输入成绩:'))
if score >= 90:
    print('A')
elif score >= 80:  # score 肯定是小于90
    print('B')
elif score >= 70:  # score < 80
    print('C')
elif score >= 60:
    print('D')
else:
    print('E')


"""
练习:
    1.超市活动,购买金额不足180,支付原金额,在180以上打8折,金额在300以上打6折,
       录入购买金额,计算出支付金额
    2.做一个数据比较器:根据输入的两个数 获取其中的最大值
    3.录入身高(单位是m)、体重(单位是kg),计算一个人的BMI值,判断,判定身材状况
          BMI小于18.5 偏瘦
          BMI在18.5到24.9之间 正常
          BMI大于24.9 偏胖
    4.模拟用户登录:录入用户名与密码,如果用户名为admin 密码为123456abc 则提示登陆成功 否则提示登陆失败
"""

#1. 超市活动,购买金额不足180,支付原金额,在180以上 打8折, 金额在300以上打6折录入购买金额,计算出支付金额
money = float(input('请输入购买金额:'))
if money > 300:
    payment = money * 0.6
elif money > 180:
    payment = money * 0.8
else:
    payment = money
print('支付金额为', payment)

#2. 做一个数据比较器:根据输入的两个数 获取其中的最大值
num1 = float(input("a:"))
num2 = float(input('b:'))
if num1 > num2:
    print('a比较大,a的值为', num1)
else:
    print('b比较大,b的值为', num2)


#3. 录入身高(单位是m)、体重(单位是kg),计算一个人的BMI值,判定身材状况
            # BMI小于 18.5 偏瘦
            # BMI在18.5到24.9之间正常
            # BMI大于24.9 偏胖
height = float(input('身高(m):'))
weight = float(input('体重(kg):'))
bmi = weight / height ** 2
if bmi < 18.5:
    print('偏瘦')
elif bmi <= 24.9:
    print('正常')
else:
    print('偏胖')


# 4. 模拟用户登录:录入用户名与密码,如果用户名为admin 密码为123456abc 则提示登录成功 否则提示登录失败
username = input('用户名:')
password = input('密码:')
if username == 'admin' and password == '123456abc':
    print('登录成功')
else:
    print('登录失败')



"""
分支语句嵌套
    在满足某个条件的基础上还需要再次进行逻辑判断
"""
"""
需求:
    计算加油的金额
    因为油号不同 价格不同 优惠也是不一样
    92  单价8元/L   添加30L及其以上  打8折 否则按照原价处理
    95  单价8.8元/L  添加25L及其以上  打8折  否则按照原价处理
    98  单价9.5元/L   添加20L及其以上  打9折  25L及其以上8.5折  30L及其以上8折 否则按照原价处理
"""
oil_num = int(input('请输入油号:'))
litre = float(input('加油的升数(L): '))
# 判断油号
if oil_num == 92:
    if litre >= 30:
        payment = 8 * litre * 0.8
    else:
        payment = 8 * litre
elif oil_num == 95:
    # pass  # 代码块必须有内容  当前没有写逻辑可以使用pass占位
    if litre >= 25:
        payment = 8.8 * litre * 0.8
    else:
        payment = 8.8 * litre
else:
    # pass  # 空白代码块的占位符
    # if litre >= 30:
    #     payment = 9.5 * litre * 0.8
    # elif litre >= 25:
    #     payment = 9.5 * litre * 0.85
    # elif litre >= 20:
    #     payment = 9.5 * litre * 0.9
    # else:
    #     payment = 9.5 * litre
    if litre < 20:
        payment = 9.5 * litre
    elif litre < 25:
        payment = 9.5 * litre * 0.9
    elif litre < 30:
        payment = 9.5 * litre * 0.85
    else:
        payment = 9.5 * litre * 0.8

print(oil_num, '号油添加', litre, '升的油价是', payment)

8.循环结构语句

"""
循环:周而复始 重复做同一件事
    一直重复操作,没有终止,在编程里程为死循环 【在程序中是要避免的  ---程序卡死】
    常见的循环结束状态:
        1.循环满N次 比如:体育测试:围着操场跑满5圈
        2.循环达到某个条件 比如:体育测试:跑满1000米
    Python提供的循环操作,有两个结构:
    1.for-in循环
      本质上实在遍历[逐个获取]容器型数据,在遍历获取元素的过程中进行相应的逻辑判断
      容器中有几个元素,这个循环就执行几次
      语法:
          for 变量名 in 容器型数据
               循环体
      解读:
      in 可以理解成进入容器中拿元素数据
      变量名 in进入拿到数据之后 赋值给变量名

      循环结束点:in 到容器中 没有数据可拿的时候 循环结束
    2.while循环
"""
s = 'hello'
#逐个将字符串s中的元素取出来
for ch in s:
    print('跑了一圈')

#获取字符串中小于l的字符
#逻辑 获取到元素子厚 要对其进行判断 判断是否是小于1的
for ch1 in s:
    if ch1 < 'l':
        print(ch1)


#假如跑100圈 使用循环的时候 可以使用range快速生成一个等差数列
"""
range(stop)
    设定一个结束值,等差数列是从0开始 步长为1 到stop[不包含]结束
       range(10) ===> 0 1 2 3 4 5 6 7 8 9
range(start,stop)
    设定了起始值和结束值,等差数列是从start[包含]开始 步长为1 到stop[不包含]结束
       range(1,11) ===> 1 2 3 4 5 6 7 8 9 10
range(start,stop,step)
    step步长
        正数 --- 生成的是递增的等差数列 要求 起始值<结束值
        负数 --- 生成的是递减的等差数列 要求 起始值>结束值
    stop结束位置[不包含]
    start开始位置[包含]
    range(1,10,2) ===> 1 3 5 7 9
    range(10, 0, -2) ====> 10 8 6 4 2 
range(100) ===> 0-99
"""
for ele in range(1, 101):
    print('跑第', ele, '圈')


for ele1 in range(0, 100, 5):
    print(ele1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值