day02 运算符与分支结构笔记

一、运算符

1. 数学运算符

+(加)、-(减)、*(乘)、/(除)、%(取余、取模)、//(整除)、**(幂)

  • 除(/)
print(2/5)#0.4
  • 取模
print(8%2)	#2
print(15%4)	#3
#应用:取低位数,取个位数,%10,取百位数%100
print(12312%100)
print(8979%10)
  • // 整除 x除以y的结果向小取整
print(5/2)
print(5//2)
print(-5//2)	#-3
print(89//3)
print(-289//32)
#应用:去掉低位数,获取最高位
print(28013//100)
#练习:获取任意一个整数的十位数
#方法一
print((345//10)%10)
print((18976//10)%10)
print(6%6)
#方法二
print((345%100)//10)
print((18976%100)//10)
print(6//10)
  • 幂 求x的y次方
print(2**3)
print(25**0.5)#开平方
print(27**(1/3))#开三次方
print(29**4)
2.比较运算符
print(10%2==0)    #= =
print(5!=5)       #! =
print(3!=1)
print(78>=21)     #> =
print(213<=59)    # < =
age=999
print(12<=age<=80)#C语言 12<=age && age<=78

3.逻辑运算符
#and or not
num=21

print(num,'是否能够同时被3和7整除',num%3==0 and num%7==0)
print(num,'是否能够同时被3和7整除',num%21==0)
num2=4

print(num2 %3==0 or num2 %7==0 or num2 %5==0)

years=eval(input('年份:'))
print((years%4==0 and years%100!=0 )or ( years%400==0))

#对一个条件进行否定 not True->false
age=212
print(not (age%3==0 and age%7==0))
  • 逻辑运算符的拓展

逻辑与运算的短路操作:如果第一个条件是false,那么后面的条件不会执行

False and print('条件1')
print('==========')

逻辑或运算的短路操作:如果第一个条件是True,那么后面条件不再执行

False or print('条件2')
  • 数据的布尔测试
  1. python中任何类型的数据都可以转换成布尔
    转换规则:任何为0为空的值都会转换成false,其他都是true
    空串 “” [] () {} -> false
    none ->false

    print(bool(0))
    print(bool(''))
    print(bool(None))
    
  2. 数据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
    
    
  3. 数据1 or 数据2
    如果数据1的布尔值是true,结果就是数据1;如果数据1的布尔值是false,结果就是数据2
    也可理解为一直找真值,找到真值就返回真值,否则就一直找下去,返回最后一个假值

print(0 or 10)      #10
print(1 or 2)  		#1
print(-3 or 9) 		#-3
print(None or 'abc')#abc
print(False or 100) #100
  1. not 数据
print(not 100)   #false
print(not 'abc') #false
print(not "")    #true
4.赋值运算符

给变量赋值,不会产生结果(数据)!!!
赋值语句没有结果

num =100
num +=10
num *=3
num %=4
print(num)
5. 位运算
  • 计算机直接能存储的数据只有数字
    2进制:(0-1)0b1010
    八进制(0-7) 0o67
    16进制(0- 9 A10 B11 C12 D13 E14 F15) 0xff00
print(bin(89))
print(bin(0o45))
  • oct() 转八进制,hex()转16进制
    计算机保存二进制的补码
    原码 :最高位表示符号位加真值,后面是数的二进制
print(bin(25263))
  • 正数的原码补码反码一样
    负数才有反码和补码
    反码: 符号位不变,其余各位取反

    10(反码) 0 0001010
    -10(反码)1 1110101

  • 补码 反码加1 1110110
    计算器底层只能做加法,所以需要原码补码反码
    减法 就是 负数补码相加 得到的(是反码)变成原码就是运算结果

  • 位运算:对计算机内存空间里面的数对二进制数进行运算:&(与)、|(或)、^(异或)、<<(左移)、>>(右移)

  1. 101 & 001 ->000 相应位为都为1,结果为1,否则为0
    print(7 & 2)

应用1:偶数二进制存储最低位一定为0,奇数最低位(2的0次方)一定是1,若某数与1相与,则保留了最低位,其他位置0

  1. 或 ( | ) 有1个为1,结果为1 应用:置1

  2. 异或 ( ^ ) 二进制相异,结果为1 异或两次,还原

  3. 按位取反 (~) ,对每个二进制位取反,即把1->0,0->1

  4. 左移 (<

print(3<<1)#6   乘2的1次方   <
print(5<<1)#10
print(-2<<1)#-4
  1. 右移 ( >>N) ,整数快速整除 2的N次方
print(6>>1) #3
print(-5>>1)#-3
6.运算符优先等级
  • 数学运算>比较运算>逻辑运算>赋值(赋值优先级别最低)
  • 数学运算符里面的运算符:** 大于 * / % // 大于 + -
  • 有括号先算括号 运算中只有小括号
num= 10
num *=8*2 # num*=16
print(num)

二、分支结构

1. 单分支结构
#闰年判断
years=eval(input('请输入年份:\n'))
print(years)
if (years%4==0 and years%100!=0)or (years%400==0):
    print('该年是闰年')
else:
    print('该年是平年')
#判断偶数多种方法
num=eval(input('请输入一个数:'))
if num%2==0:
    print('偶数')
else:
    print('奇数')
#一种有点费脑子的写法
if num%2: 			#布尔值 num%2 if 为真  就执行if后面的语句
    print('奇数')
else:
    print('偶数') 

if not num%2:		#不 假 则真
    print('偶数')
else:
    print('奇数')

str1=''
if str1:# if真
    print('不是空串')
else:
    print('是空串')
2.多分支结构
  • 从上往下依次判断条件语句的结果是否为True,如果为True就执行这个if或者elif对应的代码段,执行完if再判断后面的条件
  • else后面的代码只有在前面所有的条件都不满足的时候才会执行
 if score < 60:
     print('E')
 elif score < 70:
     print('D')
 elif score < 80:
     print('C')
 elif score < 90:
     print('B')
 else:
    print('A')

num = eval(input('请打印一个数\n'))
if num % 2:
    print('奇数')
else:
    print('偶数')
    if num % 4 == 0:
        print('且是4的倍数')

你可能感兴趣的:(python,python)