day3 变量、运算符、(分支结构)

变量、运算符(数学运算、比较运算、逻辑运算、赋值运算)、(分支结构)

版本号

A.B.C

C -> 修改以前的版本的bug

B -> 功能增加、修改

A -> 不考虑兼容以前的版本修改

1.变量知识

  1. 重新赋值

    a = 10  # 创建变量a,并且赋值为10
    print(a)
    a = 20  # 重新给a赋值为20
    print(a)
    for i in range(0, 10):
        a = a + i
        # print(a)
    
    a = 'abc'  # 重新赋一个其他类型的数据
    print(a)
    
  2. 同时定义多个变量

    • 1)同时定义多个变量赋相同的值:变量名1 = 变量名2 = 变量名3 = … = 数据

      x = y = z = 100
      print(x, y, z)
      
      # x = 100
      # y = 100
      # z = 100
      
    • 2)同时定义多个变量赋不同的值:变量名1,变量名2,变量名3,… = 数据1,数据2,数据3 …

      注意:=后面的数据个数必须和前面的变量的个数保持一致

      m, n = 10, 20
      print(m, n)
      
      # 练习:交换两个变量的值
      a = 100
      b = 200
      
      # 方法一
      c = a
      a = b
      b = c
      
      # 方法二
      a, b = b, a
      print(a, b)
      
  3. 变量保存数据的底层逻辑

    定义变量的时候会自动在内存中申请空间保存数据
    原理:定义变量的时候会自定申请内存,内存的大小由数据的大小决定;重新给变量赋值,会重新根据新的数据申请新的内存

    问题一:为什么Python定义变量不用说明数据类型

    因为python存储方式是内存的大小由数据的大小决定

    问题二:为什么Python给变量重新赋值可以赋不同类型的数据

    因为python重新给变量赋值,会重新根据新的数据申请新的内存

    问题三:为什么Python可以直接计算并且保存9999 ** 9999的计算结果

    因为python定义变量的时候会自定申请内存,内存的大小由数据的大小决定

    补充:内存单位
    位(bit)
    1字节(byte) = 8位
    1Kb = 1024字节
    1Mb = 1024Kb
    1GB = 1024Mb
    1Tb = 1024GB

2.数字运算符

  1. (加)+、(减)-、(乘)*、(除)/

    # 1.(加)+、(减)-、(乘)*、(除)/
    # Python中的+、-、*、/和数学中的+、-、×、÷一样
    print(5 + 2)
    print(5 - 2)
    print(5 * 2)
    print(5 / 2)
    
  2. (整除)//

    # x // y    -   求x除以y的商,商向小取整(找和小数相邻的两个整数中较小的那个)
    print(-5 // 2)
    print(5 // 2)
    
    # 应用1:希望能够整除的情况下商是整形
    print(4 / 2)  # 2.0
    print(int(4 / 2))  # 2
    print(4 // 2)  # 2
    
    # 应用2:去掉(砍掉)一个整数的低位数,保留高位数
    num = 2342
    print(num // 10)  # 234
    print(num // 100)  # 23
    
  3. (取余,取模)%

    # x % y -   求x除以y的余数
    print(5 % 2)
    print(15 % 4)
    
    # 应用1:判断两个数字之间的整除关系 -   判断余数是否为0
    print(70 % 2 == 0)
    
    # 应用2:去掉高位数,保留低位数
    num = 27283
    print(num % 10)  # 3
    print(num % 100)  # 83
    
    # 练习:获取任意一个正整数的十位数
    num = 8271
    # 方法一
    print(num // 10 % 10)
    # 方法二
    print(num % 100 // 10)
    
  4. ** - 幂运算

    # x ** y    -   求x的y次方
    print(2 ** 3)
    print(5 ** 4)
    print(4 ** 0.5)
    print(2 ** -3)
    
    # 注意: /的结果一定是浮点数;其他运算符的运算结果的类型和运算对象有关
    
    print(10 + 3.0)
    print(2.5 * 2)
    print(10 / 1)
    

3.比较运算符

比较运算符:>、<、==、!=、>=、<=

注意1:所有的比较运算符的运算结果都是布尔值

print(10 > 30)
print(10 < 30)
print(10 == 10)
print(10 >= 10)
print(10 != 10)

age = int(input('请输入你的年龄:'))
if age >= 18:
    print('成年了')
else:
    print('未成年')

num = 89
# 判断num对2取余的结果是否为0
print('是否是偶数:', num % 2 == 0)

注意2:Python的比较运算符直接连写表示范围

x = 2
print('x是否在0~1之间:', 0 <= x <= 1)

num = int(input('请输入你要判断的数字:'))
if num % 2 == 0:
    print('偶数')
else:
    print('奇数')

4.逻辑运算符

逻辑运算符:and(逻辑与运算)、or(逻辑或运算)、not(逻辑非运算)
单一条件:如果下雨;如果温度高于35
复合条件:并且(要求多个条件同时成立)、或者(要求多个条件中只要有一个条件成立就行)

  1. and - 逻辑与运算
    应用场景:如果需要多个条件同时满足,就用and连接。相当于生活中的"并且"
    运算规则:条件1 and 条件2 - 如果两个条件都成立结果是Ture,只要有一个条件不成立结果就是False
    True and True - True
    False and True - False
    True and False - False
    False and False - False

    # 练习:写条件判断num是否是大于10的偶数
    num = 33
    # 分析条件的类型:看是单一条件还是复合条件
    # 所有条件:大于10(num>10)、是偶数(num % 2 == 0)
    # 分析连接方式:num % 2 == 0 and num > 10
    print('num是否是大于10的偶数:', num % 2 == 0 and num > 10)
    
    # 练习:写条件判断num是否能同时被3和7整除
    num = 42
    # 分析条件的类型:看是单一条件还是复合条件
    # 所有条件:被三整除(num % 3 == 0)、被七整除(num % 7 == 0)
    # 分析连接方式:num % 3 == 0 and num % 7 == 0
    print('num是否能同时被3和7整除:', num % 3 == 0 and num % 7 == 0)
    print('num是否能同时被3和7整除:', num % 21 == 0)
    
  2. or - 逻辑或运算

    应用场景:多个条件中有一个条件成立就行,就用or连接;相当于生活中的或者
    运算规则:条件1 or 条件2 - 如果两个条件都不成立结果就是False,只要一个条件成立结果就是True
    True and True - False
    False and True - True
    True and False - True
    False and False - True

    # 练习:判断num是否能够被3或者5整除
    num = 20
    # 能被3整除:num % 3 == 0
    # 能被5整除:num % 5 == 0
    print('num是否能同时被3和5整除:', num % 3 == 0 or num % 5 == 0)
    # 练习:判断year是否是闰年
    """
    闰年分为两种:
    世纪闰年:能被400整除的年 year % 400 == 0
    普通闰年:能被4整除但是不能被100整除 (year % 4 == 0 and year % 100 != 0) 
            能被4整除: year % 4 == 0
            不能被100整除 year % 100 != 0
    """
    year = 2020
    print('year是否是闰年:', (year % 4 == 0 and year % 100 != 0) or year % 400 == 0)
    
  3. not - 逻辑非

    应用场景:对指定的条件进行否定(如果一个条件正向写情况很多很复杂,反向却非常简单,就可以将条件反向写为not)
    运行规则:not 条件
    not True - False
    not False - True

    # 年龄不大于18
    age = 19
    print(not age > 18)
    print(age <= 18)
    
    # 判断num不是偶数
    num = 80
    print('num是否不是偶数:', not num % 2 == 0)
    print('num是否不是偶数:', num % 2 != 0)
    
    # 练习:判断num是否不能同时被3和7整除
    num = 21
    print('num是否不能同时被3和7整除:', not (num % 3 == 0 and num % 7 == 0))
    print('num是否不能同时被3和7整除:', not num % 21 == 0)
    

    5.赋值运算符

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

    注意:所有赋值运算符都是用来给变量赋值的

    1. =

      变量 = 数据 - 将数据保存到变量中,变量即可以是已经定义过的变量,也可以是没有定义过的

    2. 复合赋值运算符

      变量 += 数据 - 先将变量中的数据取出来,然后和后面的数据进行加法运算,然后将计算结果再赋值给变量。

      (变量必须是已经定义过的变量,并且里面保存的数据,可以和后面的数据进行加法运算)

      a = 20
      a += 10  # a = a + 10 ->a = 20 + 10 -> a = 20
      print(a)
      
      a -= 5  # a = a - 5 ->a = 30 + 5 -> a = 25
      a *= 2  # a = a * 2 ->a = 25 * 2 -> a = 50
      a %= 3  # a = a % 3 ->a = 50 % 3 -> a = 2
      print(a)
      
      age = 19
      print(age >= 18 and age <= 28)
      
      # 所有的赋值数据都是没有结果的,无法提供数据
      # print(a = 10)
      # print(age += 10)
      # a = (b = 1)
      

      6.运算符优先级

      如果一个表达式中有多种运算符,谁的优先级高就先算谁

      1. 数学运算符> 比较运算符 > 逻辑运算符 > 赋值运算符(最低的)
      2. 不同的数学运算符的优先级和数学一样。(** > *、/、%、// > +、—)
      3. 有括号先算括号里面的 - ()

      7.分支结构

      1. 程序执行过程:(顺序结构)

        默认情况下,程序从上往下按顺序一条一条的执行,每一条语句都会执行并且只会执行一次。

        print(10)
        print(20)
        print(30)
        
      2. 分支结构(if) - 让程序根据条件执行代码

        1. if单分支结构 - 如果xxx就xxx(满足条件执行某个操作,条件不满足的时候这个操作就不执行)

          语法:
          if 条件语句:
          代码段

          说明:
          1)if - 关键字:固定写法
          2)条件语句 - 可以是任何有结果的表达式(比如:具体数据、运算表达式、已经定义过的变量等,只有赋值语句不行);
          一般将结果是布尔的表达式作为条件
          3): - 固定写法(注意输入法问题)
          4)代码段 - 结构上,就是和if保持一致缩进的一条或者多条语句(至少一条!!!;
          逻辑上,就是满足条件才会执行代码
          执行过程:先判断条件语句是否成立(如果条件语句的结果不是布尔,就转换成布尔看是否是Ture),如果成立就执行代码段;条件不成立,代码段就不执行

          num = 230
          if num % 2 == 0:
              print('====')
          
        2. if双分支结构 - 如果xxx就xxx,否则就xxx(条件成立执行某个操作,不成立就执行另一个操作)

          语法:
          if 条件语句:
          代码段1(满足条件执行的代码)
          else:
          代码段2(不满足条件执行的代码)

          # 练习:根据age的值打印成年或者未成年
          age = int(input('请输入你的年龄:'))
          if age >= 18:
              print('成年了')
          else:
              print('未成年')
          
          # 练习:根据year的值打印'闰年'或者'平年'
          year = int(input('请输入年份:'))
          if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
              print('闰年')
          else:
              print('平年')
          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值