day03-Python运算符和流程控制

运算符

*Python支持的运算符:数学运算符、比较运算符、逻辑运算符、赋值运算符、位运算

一、数学运算符:+(加法)、-(减法)、*(乘法)、/(除法)、%(取余、取模)、//(整除)、**(幂)

  1. +、-、*、/ 和数学中的 +、-、x、➗的功能一模一样
print(3*7)  # 21
print(4/8)  # 0.5
  1. %(取余、取模)

    x % y - 求x除以y的余数

    print(10 % 5)  # 0
    print(15 % 2)  # 1
    

    应用一: 判断一个数是否能够被另外一个数整除

    print(15 % 3)  # 0
    print(7 % 3)   # 1
    print(-5 % 3)  # 1 需注意
    print(8 % 2)   # 0 常用于判断是否为奇偶
    

    应用二: 取低位数

    num = 819
    # 取个位数
    print(num % 10)
    # 取十位数
    print(num % 100)
    # 取百位数
    print(num % 1000)
    
  2. 整除(//)

    x // y - x除以y的结果向下取整。

    print(7 / 2)     # 3.5
    print(7 // 2)    # 3
    print(-7 // 2)   # -4
    

    应用:去掉低位数

    num = 27383
    print(num // 10)   # 2738
    print(num // 100)   # 273
    print(num // 100)   # 27
    

    练习:获取任意一个整数的十位数
    例如 345 -> 4; 18976 -> 7; 6 -> 0

    • 方法一:整除10把原数的个位去掉(原来的十位数就会变成新的个位数);对10取余数获取最新的个位数(原来的10位数)

    • 方法二: 先用10取余获取所求数的最高位;再整除10获取最高位

      print((345 % 100) // 10)    # 4 方法一
      print((345 // 10) % 10)     # 4 方法二
      
      print((18976 % 100) // 10)  # 7 方法一
      print((18976 // 10) % 10)   # 7 方法二
      
      print(6 // 10)              # 0
      
  3. 幂(**)

    **x ** ** y - 求x的y次方

    print(4 ** 2)  # 16
    print(3 ** 2)  # 9
    print(9 ** 0.5)  # 3.0
    print(27 ** (1/3))  # 3.0
    print(1/2 ** -2)  # 4.0
    

二、比较运算符 ==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)

注意:比较运算符所得结果为布尔值

print(1 == 1)       # True
print(1 != 1)       # False
print(5 % 2 == 1)   # True
print(2 == 2 ** 0)  # False  此处优先级 ** > ==

注意: Python支持 0<= x < 10 此类情况,与 C和JAVA不同

x = 10
print(0 < x <= 11)    # True
print(11 < x <= 20)   # False

三、逻辑运算符:and(逻辑与运算)、or(逻辑或)、not(逻辑非运算)

  1. and(逻辑与运算)

    • 应用场景
      如果要求多个条件同时满足,这个时候多个条件用and连接。相当于生活中的并且。

    • 规则
      True and True -> True
      True and False -> False
      False and True -> False
      False and False -> False

    练习:写出判断指定的数是否同时能被3和7整除的条件

    num = 21
    print(num, '是否同时能够被3和7整除', (num % 7 == 0) and (num % 3 == 0))  # True 法一
    print(num, '是否同时能够被3和7整除', num % (3 * 7) == 0)    # True 法二
    
  2. or(逻辑或运算)

    • 应用场景
      如果要求多个条件只要有一个满足就行,此时多个条件用or来连接;相当于生活中的或者。

    • 运算规则
      True or True -> True
      True or False -> True
      False or True -> True
      False or False -> False

    练习1:写出判断一个数是否能够被3或者7或者5整除的条件。

    num = 15
    print(num, "一个数是否能够被3或者7或者5整除: ", num % 3 == 0 or num % 7 == 0 or num % 5 == 0)  # True
    

    练习2:写出判定指定的年份是否是闰年
    闰年: 情况1 - 年份能被4整除但是不能100整除
    情况2 - 年份能被400整除

    year = 2000
    print(year, "年是否为闰年: ", (year % 4 == 0 and (year % 100 != 0)) or (year % 400 == 0))  #法一
    print(year, "年是否为闰年: ", (year % 4 == 0 and not(year % 100 == 0))or (year % 400 == 0))  #法二
    
  3. not (逻辑非运算)

    • 应用场景
      如果要对一个条件进行否定,就使用not
    age = 22
    print(age > 22)      # False
    print(not age > 22)  # True
    print(age <= 22)     # True
    
    num = 10
    print(not num % 4 == 0)  # True
    print(num % 3 != 0)      # True
    

    练习:写出不能同时被3和7整除的条件

    • 情况①:正向思考分以下三种情况(较为麻烦)

    1)能被3整除但是不能被7整除
    2)能被7整除但是不能被3整除
    3)既不能被3整除也不能被7整除

    print((num % 3 == 0 and num % 7 != 0) or (num % 7 == 0 and num % 3 != 0) or  (num % 3 != 0 and num % 7 != 0)) # 法一 True
    
    • 情况②:反向思考(比较简单)

    ​ 首先找出能被3和7整除的数,即3和7的倍数 21(3 * 7),最后取非运算

    print(not (num % 21 == 0)) # 法二 True
    

四、逻辑运算符的扩展

  1. 短路操作

    • 逻辑与运算的短路操作:如果第一个条件是False,那么第二个条件对应的语句不会再执行
      例 C中 if(a++ < 0 && b++ >0) 如果 a++ < 0 为False 则不会执行b++
    • 逻辑或运算的短路操作:如果第一个条件是True,那么第二个条件对应语句不会再执行
      例 C中 if(a++ < 0 || b++ >0) 如果 a++ < 0 为True 则不会执行b++
    False and print("条件2")  # False
    print("----------")
    False or print("条件2")   # 打印条件2
    
  2. 数据的布尔测试(掌握)

    • 在Python中任何数据类型都可以转化成布尔
    • 转化规则:任何为零为空的值都会转换成为False,其他都是True.
    • 0 -> False 0.0 -> False 0.000 -> False
      ‘’ -> False “” -> False None -> False [] -> False {} -> False () -> False
    • bool(数据) -> 获取指定数据对应的布尔值
    print(bool(0))    # False
    print(bool(0.0))  # False
    print(bool(''),bool(""),bool(None))  # False,False,False
    print(bool(10),bool(-1))    # True,True
    print(bool(' '),bool(" "))  # True,True
    
  3. 运算对象不是布尔值

    ①在Python中任何类型的数据都可以作为逻辑运算符的运算对象

    print(7 and 8)  # 8
    print(7 or 8)   # 7
    

    ②数据1 and 数据2 - 如果数据1的布尔值是True,结果就是数据2;如果数据1的布尔值是False,结果就是数据1

    print(0 and 10)   # 0
    print(1 and 2)    # 2
    print(-3 and 9)   # 9
    print(None and 'abc')  # None
    print(False and 100)   # False
    

    ③数据1 or 数据2 - 如果数据1的布尔值是True,结果就是数据1;如果数据1的布尔值是False,结果就是数据2

    print(1 or 2)      # 1
    print(-3 or 9)     # -3
    print(None or 'abc')   # abc
    print(False or 100)    # 100
    

    ④not 数据1 - 如果数据1的布尔值是True,结果是False; 如果数据1的布尔值是False,结果是True

    print(not 100)     # False
    print(not 'abc')   # False
    print(not "")      # True
    

五、赋值运算符

赋值运算符:=、+=、-=、*=、/=、%=、//=、*** =

重要结论:赋值运算符的作用是给变量赋值,不会产生结果(数据)!!!

print(10)       # 10
print(5 + 5)    # 10
print(5 == 5)   # True
print(5 and 5)  # 5
# print(a = 10) ✖ 这是错误用法
a = 10
print(a)  # 10
  • =

直接将 = 右边的数据赋值给左边的变量。 (= 的左边必须是变量

10 = 20 # ✖ 这是错误用法
abc = 20
  • +=、-=、*=、/=、%=、//=、**=

变量 += 数据 - 将变量中的值取出来和指定进行加法运算,然后将运算的结果重新赋值给变量
注意:变量必须是已经赋值的变量,即不能为空

num = 125
num += num  # num = num + num = 250
print(num)  # 250

num -= num  # num = num - num = 0
print(num)  # 0

num += 20   # num = num + 20 = 20
print(num)  # 20

num *= 2    # num = num * 2 = 40
print(num)  # 40

num %= 3    # num = num % 3 = 1
print(num)  # 1

六、运算符优先级

运算符优先级从高到低: 数学运算 > 比较运算 > 逻辑运算符 > 赋值运算

  1. 运算符优先级从高到低: 数学运算 > 比较运算 > 逻辑运算符 > 赋值运算

  2. 数学运算符优先级: ** > *、/、%、// > + 、-

  3. 有括号先算括号里面,括号只有小括号。

print(4 + 8 / 2 > 5 + 2 * 4 and 8 < 15)  # False

num = 10
num += 8 * 2
print(num)  # 26

num = 10
num *= 8 * 2
print(num)  # 160

# (num = 2) + 4 ✖ 这是错误写法

七、流程控制

流程控制指的是控制程序的执行顺序

  1. 顺序结构(默认):代码从上往下一条一条的按顺序执行

    print("1")
    print("2")
    print("3")  # 输出顺序:1 2 3
    
  2. 选择/分支结构:根据条件选择某个操作 (if语句

    • 解决问题:如果满足某个条件就执行某个操作;如果不满足条件,就执行另外一个操作

    • 语法:
      if 条件语句:
      代码段1
      代码段2 # 此时代码段1与代码段2相同缩进,会一起执行

      else:

      ​ 代码段3

      ​ 代码段4 # 此时代码段1与代码段2相同缩进,会一起执行

    • 说明:
      if - 关键字,固定写法
      条件语句 - 任何有结果的表达式(不能是赋值语句)
      冒号 - 固定写法,之一是英文的冒号
      代码段 - 和if包吃一个缩进的一条或多条语句;满足条件才会执行代码

    • 执行过程:
      先判断条件语句的布尔值是否为True,如果是就执行代码段,否则代码段不执行

      练习1:如果指定的数是偶数就打印’偶数’,否则打印‘奇数’

      num = 10
      if int(num) % 2 == 0:
          print(num, "这是偶数")
      else:
          print(num, "这是奇数")
      
      num = 10
      if num % 2:
          print(num, "这是奇数")
      else:
          print(num, "这是偶数")  # 简化版
      

    ​ 练习2:如果输入的年份是闰年,就是打印‘闰年’,否则打印‘不是闰年’

    year = int(input("请输入年份: ")) 
    # 注意:通过input函数输入的数据类型是字符串,如果要对结果进行数字曹操需要先转换
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        print(year, "是闰年")
    else:
        print(year, "不是闰年")
    

    ​ 练习3:写一个程序判断一个三位数是否是回文数。
    ​ 121,232,414 -> 打印回文数

    x = input("请输入一个数: ")
    if len(x) != 3:
        print("您的输入有误")
    else:
        x = int(x)
        if x// 100 == x % 10:
            print(x, "是回文数")
        else:
            print(x, "不是回文数")
    
  3. 循环结构:让代码重复执行。(for循环、while循环)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值