Day3 运算符 & if语句 & 数字类型

1. Operators

1.1 运算符分类

  • 数学运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算
  • 位运算

1.2 数学运算符

数学运算符符号 说明
+
-
*
/
// 整除
% 取余
** 幂运算

1.3 比较运算符

比较运算符符号 说明
> 大于
< 小于
== 等于
>= 大于等于
<= 小于等于
!= 不等于
  • 所有的比较运算符的运算结果都是布尔值
    print(100 > 10)   # True
    print(100 < 10)   #False
    print(100 == 10)  #False
    print(100 != 10)   #True
  • python中支持数学中表示范围的写法
    num = 200
    print(1 <= 10 <= 100) #False

1.4 逻辑运算符

1.4.1 逻辑运算符分类

运算符号 说明
and 逻辑与运算
or 逻辑或运算
not 逻辑非运算
  • 所有的逻辑运算符的运算对象和运算结果都是布尔值

1.4.2 逻辑与运算

  • 两个都是True,结果才是True,只要有一个是False,结果就是False
    • True and True --> True
    • True and False --> False
    • False and True --> False
    • False and False --> False
  • 练习: 获得奖学金的条件是评分不小95 并且绩点不小于4.0
  score = 98
  grade = 3.7
  if score >= 95 and grade >= 4:
  print("能拿到奖学金")
  else:
  print("不能拿到奖学金")
  • 练习: 判断是否是儿童; 3到12岁的是儿童
  age = 18
  print("是否是儿童",  age >= 3 and age <= 12)
  print("是否是儿童", 3 <= age <= 12)

1.4.3 逻辑或运算

  • 两个都是False,结果才是False,只要有一个是True,结果就是True

    • True and True --> True
    • True and False --> True
    • False and True --> True
    • False and False --> False
  • 当要求条件中只有一个条件满足时,就将多个条件用or连接,相当于生活中的或者

  • 练习: 获得奖学金的条件是:a. 评分大于95 并且绩点不小于2.0 b.绩点大于4.5, 评分不低于80

  score = 82
  grade = 4.8
  if (score >95 and grade >= 2) or (score >=80 and grade > 4.5) :
  print("能拿到奖学金")
  else:
  print("不能拿到奖学金")
  • 短路操作
    • 条件1 and 条件2 --》如果条件1的结果是False,那么系统不会判断条件2的结果,整个语句返回False
 num1 = 10
 def func1():
 global num1
 num1 += 10
 return True

 False and func1()
 print(num1)  #结果10
  • 条件1 or 条件2 --》如果条件1的结果是True,那么系统不会判断条件2的结果,整个语句返回True
  num1 = 10
  def func1():
  global num1
  num1 += 10
  return False

True or func1()
print(num1)  # 结果10

1.4. 4 逻辑非运算

  • 布尔值取反, True变False,False变True

    • not True ->False
    • not False ->True
  • 年龄不大于18

  age = 18 
  print(age <=18)
  print(not age >18)

1.5. 赋值运算符

  • 种类: =, +=, -+, *=, /=, //=, %=, **=
  • 所有的赋值运算符左边必须是变量,复合赋值运算符的左边要求除了是变量外,这个变量必须是已经声明过的变量
  • 赋值符号的右边可以是数据、已经声明过的变量、运算表达式
    name = "sandy"
  • 变量 += 数据 -》将变量中保存的值加上指定的数据,将结果重新保存到变量中
  num2 = 10
  num2 += 2
  print(num2) #结果12

1.6. 运算符的优先级

  • 数学运算>比较运算>逻辑运算>赋值运算符(最低)
  • 先算优先级高的,再算优先级低的,有括号先算括号里面的
  • 逻辑运算符(not > and > or)
  num3 = 10 + 2 > 9 and 3 * 2 < 4   #等价于12 > 9 and 6 < 4
  print(num3)  # 结果False 

  print(True or False and False)  # 为True  说明and 优先级大于 or

2 if 语句

2.1 什么时候需要if条件语句

  • 程序中某些代码不是一定会执行,而是在满足某些条件的时候才执行就可以使用if条件语句

2.2 if结构

  • 语法
    if 条件语句:
    代码块

  • 说明
    if - 关键字,固定写法
    条件语句 -结果是布尔的表达式;本质是除了赋值语句以外的任何语句
    例如:数据,已经声明过的变量,运算表达式
    : - 固定写法(一般有冒号的地方都会产生缩进)
    代码块: 和if保持一个缩进的一条或多条语句;满足某些条件才会执行

  • 执行过程
    先判断条件语句是否是True(如果条件语句不是布尔值,先转换乘布尔再判断)
    如果是True就执行代码块中的语句,否则不执行,直接执行后面的其他与句

  • 练习: 如果number是偶数,就打印偶数 否则打印奇数
  num = 16
  if num % 2 == 0:
  print("是偶数")
  else:
  print("是奇数")

2. 3 if-else结构

  • 满足某个条件执行一个操作, 不满足这个条件执行另外的操作

  • 语法
    if 条件语句:
    代码块1
    else:
    代码块2

  • 说明
    if - 关键字,固定写法
    条件语句 -可以是数据,已经声明过的变量,不包含赋值符号的运算表达式
    : - 固定写法(一般有冒号的地方都会产生缩进)
    代码块1: 和if保持一个缩进的一条或多条语句;满足某些条件才会执行
    else - 关键字,固定写法
    代码块2 - 和else保持一个缩进的一条或多条语句

  • 执行过程
    先判断条件语句是否是True(如果条件语句不是布尔值,先转换乘布尔再判断)
    如果是True就执行代码块1,否则执行代码块2

if 1:
    print("满足条件")
else:
    print("不满足条件")

2.4 if-elif-else

  • 语法
    if 条件语句1:
    代码块1
    elif 条件语句2:
    代码块2
    elif 条件语句3:
    代码块3
    ...
    else:
    代码块e

  • 执行过程
    先判断条件语句1是否是True, 如果是True就执行代码块1,然后整个if-elif-else结构结束,直接执行其他语句
    如果判断条件语句1 False,则判断条件语句2是否是True,如果是True就执行代码块2,然后整个if-elif-else结构结束
    直接执行其他语句 以此类推
    如果前面所有的语句都不满足,则执行else中的语句

  • 练习:打印以下
    0-3 幼儿
    4-12 儿童
    13-17 少年
    18-28 青年
    29-49 壮年
    50-69 中年
    70以上 老年

age = 100
if  age < 0:
    print("还没出生")
elif age <= 3:
    print("是婴儿")
elif age <= 12:
    print("儿童")
elif age <= 17:
    print("少年")
elif age <= 28:
    print("青年")
elif age <= 49:
    print("壮年")
elif age <= 69:
    print("是中年")
else:
    print("是老年")

2.5 if嵌套

  • 可以在任何if结构中根据需要再写其他的if结构
  • 练习:如果一个数是偶数就打印偶数,否则打印奇数,如果这个数能被4整除,打印是4的倍数,如果这个数个位是3,打印个位是3的数
num = 20
if num % 2 == 0 :
    print("是偶数")

    if num % 4 == 0:
        print("是4的倍数")
else:
    print("是奇数")

    if num % 10 == 3:
        print("最后一位数是3")
  • 练习: 判断一个三位数是否是水仙花数(各位 十位 百位 各自的三次方之和等于三位数本身)
    • 153 == 1 ** 3 + 5 **3 + 3 **3
      num = 153
      a = num % 10
      b = num // 10 % 10
      c = num // 100
      if num == a ** 3 + b ** 3 + c ** 3:
      print("是水仙花数")
      else:
      print("不是水仙花数")

3 number

number 说明
int 整型
float 浮点型
bool 布尔
complex 复数

3.1 int(整型)

  • 包含所有的整数, 例如: 20, -30
  • python中可以通过二进制、十进制、八进制、十六进制的形式对整数进行表示
    • 十进制

      • 基数: 0,1,2,3,4,5,6,7,8,9
      • 进位: 逢十进一
      • 位权: 123(10) = 1102 + 2101 + 310*0 (10的多少次方)
      • 表示方法:直接写,不需要加前缀
      • 例: 9, 98, 189
    • 二进制

      • 基数: 0,1
      • 进位: 逢二进一
      • 位权: 101(2) = 122 + 021 + 12*0 (2的多少次方)
      • 表示方法: 前面加0b/0B表示二进制
      • 例: 1001, 101010
    • 八进制

      • 基数: 0,1,2,3,4,5,6,7
      • 进位: 逢八进一
      • 位权: 743(8) = 782 + 481 + 38*0 = 483(10) (8的多少次方)
      • 表示方法:前面加0o表示八进制
      • 例: 7, 742
    • 十六进制

      • 基数: 0,1,2,3,4,5,6,7,8,9,a(A),b(B),c(C),d(D),e(E),f(F)
      • 进位: 逢十六进
      • 位权: 1af(16) = 1162 + 10161 + 1516*0 = 431(10) (16的多少次方)
      • 表示方法:在十六进制前加前缀0x/0X
      • 例: 1af, a1
a1 = 0b101 #二进制表示前加0b
print(a1)  # 5

a2 = 0o101 #八进制表示前加0o
print(a2) # 65

a3 = 0X101 #十六进制表示前加0X
print(a3) # 257
  • 进制转换
    • 转换二进制:bin(其它进制整数)
    • 转换八进制:oct(其它进制整数)
    • 转换十六进制:hex(其它进制整数)
print(bin(5))  # 转换二进制   
print(oct(16))  # 转换八进制   
print(hex(17))  # 转换十六进制  

3.2 float(浮点数)

  • 包含所有的小数, 12.5, -0.12
  • python中支持科学计数法
  • 1200 == 1.2e3 0.001 == 1e-3
  print(1.2e3, 1e-3)

3.3. bool(布尔)

  • 只有True和False两个值
  • True本质就是1,False本质就是0
  print(True + 1)
  print(False + 1)

3.4. complex(复数)

  • 包含所有带有虚数的数
  • 实部 + 虚部 (数字后加j)
  num1 = 10 + 2j
  print(num1, type(num1))
  num2 = 2 - 3j
  print(num1 + num2)
  print(num1 * num2)

3.5 type函数

  • type(数据) -》获取数据对应的类型

3.6 类型转换

  • 类型名(数据) --》将数据转换为指定类型
  • int(数据); 将数据转换成整型 注 字符串转换成整型需要去掉引号后是整数
  • float(数据):将数据转换成浮点型 注 字符串转换成浮点型需要去掉引号后是数字
  • bool(数据): 数字转换成布尔时,除了0其它都会转换成True;除了空串转换成False,其他都是True
  • 注意:类型名不能作为变量名
print(type(int(12.99)), int(12.99))

print(type(float(12)), float(12))

print(bool(10 + 2j))

print(bool("False"))
  • ord函数:为序数函数,函数返回值为字符在ASCII码中的序号

你可能感兴趣的:(Day3 运算符 & if语句 & 数字类型)