Python基础入门:Task1(day01)Python入门(上)--阿里云天池

Day 01

注释

  • 单行注释:#
  • 多行注释:’’’ ‘’’

运算符

  • 算数运算符:**(幂)
  • 位与运算符:
print(bin(4))  # 0b100
print(bin(5))  # 0b101
print(bin(~4), ~4)  # -0b101 -5 按位取反
print(bin(4 & 5), 4 & 5)  # 0b100 4 按位与,从低位对齐开始
print(bin(4 | 5), 4 | 5)  # 0b101 5 按位或,从地位对齐开始
print(bin(4 ^ 5), 4 ^ 5)  # 0b1 1 按位异或
print(bin(4 << 2), 4 << 2)  # 0b10000 16 左移,最低位补0,移n位就是变为原来的2^n倍
print(bin(4 >> 2), 4 >> 2)  # 0b100 1 右移,最低位丢弃
  • 三元运算符
x, y = 4, 3
small = x if x < y else y
print(small)
`

small = 3

  • 其他运算符:
  • in 存在
  • not in 不存在
  • is 是
  • not is 不是
  • is, is not 对比的是两个变量的内存地址
  • ==, != 对比的是两个变量的值
  • 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
  • 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
  • 运算符的优先级:
  • 一元运算符优于二元运算符。例如3 ** -2等价于3 ** (-2)。先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 (1 << (3 + 2)) & 7。逻辑运算最后结合。例如3 < 4 and 4 < 5等价于(3 < 4) and (4 < 5)。
  • 二进制长度输出:
a = 1031
print(bin(a))  # 0b10000000111
print(a.bit_length())  # 11

变量和赋值

teacher = "老马的程序人生"
print(teacher)  # 老马的程序人生

数据类型和转换

  • 数据类型
  • int float bool
a = 1031
print(a, type(a))
# 1031 
  • 保留浮点型的小数点后n位
import decimal
from decimal import Decimal
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
#0.3333
  • 布尔型
  • 布尔型变量用于在数字运算中,用 1 和 0 代表 True 和 False
print(True + True)  # 2
print(True + False)  # 1
print(True * False)  # 0
  • bool 作用在基本类型变量:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False
print(bool(0), bool(0.00), bool(Flase)	#False False False
  • bool 作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False
print(bool(''), bool(()), bool([]), bool({
     }), bool(set)
#False False False Flase
  • 对于数值变量,0, 0.0 都可认为是空的。对于容器变量,里面没元素就是空的。-
  • set是一个无序且不重复的元素集合
set1 = set([1, 1, 2, 2, 3]) #{1, 2, 3}
set2 = set([2, 2, 3, 4, 4]) #{2, 3, 4}
set3 = set1 & set2 #交集
print(set3) #{2, 3}

print()函数

  • print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
  • 将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方* * 式进行转换为字符串输出;
  • 关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;
  • 关键字参数end是输出结束时的字符,默认是换行符\n;
  • 关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;
  • 关键字参数flush是立即把内容输出到流文件,不作缓存。
  • 每次输出结束都用end设置的参数&结尾,并没有默认换行
shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed with 'end='&''.")
for item in shoplist:
    print(item, end='&')
print('hello world')
# This is printed with 'end='&''.
# apple&mango&carrot&banana&hello world
  • item值与’another string’两个值之间用sep设置的参数&分割。由于end参数没有设置,因此默认是输出解释后换行,即end参数的默认值为\n
shoplist = ['apple', 'mango', 'carrot', 'banana']
print("This is printed with 'sep='&''.")
for item in shoplist:
    print(item, 'another string', sep='&')
# This is printed with 'sep='&''.
# apple&another string
# mango&another string
# carrot&another string
# banana&another string

位运算

  • 原码补码反码
  • 原码:就是其二进制表示(注意,有一位符号位)
  • 反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)
  • 补码:正数的补码就是原码,负数的补码是反码+1
  • 按位运算:
print(bin(4))  # 0b100
print(bin(5))  # 0b101
print(bin(~4), ~4)  # -0b101 -5 按位取反
print(bin(4 & 5), 4 & 5)  # 0b100 4 按位与,从低位对齐开始
print(bin(4 | 5), 4 | 5)  # 0b101 5 按位或,从地位对齐开始
print(bin(4 ^ 5), 4 ^ 5)  # 0b1 1 按位异或
print(bin(4 << 2), 4 << 2)  # 0b10000 16 左移,最低位补0,移n位就是变为原来的2^n倍
print(bin(4 >> 2), 4 >> 2)  # 0b100 1 右移,最低位丢弃
  • 利用位运算实现快速计算
  • 通过 <<,>> 快速计算2的倍数问题
n << 1 -> 计算 n*2
n >> 1 -> 计算 n/2,负奇数的运算不可用
n << m -> 计算 n*(2^m),即乘以 2 的 m 次方
n >> m -> 计算 n/(2^m),即除以 2 的 m 次方
1 << n -> 2^n
  • 通过 ^ 快速交换两个整数。 通过 ^ 快速交换两个整数
a = 2
b = 3
a = a ^ b 
b = a ^ b #b=(a^b)^b=a^(b^b)=a^0=a
a = a ^ b #a=(a^b)^b=(a^b)^a=b 以为第一个b还是原来的b,第二个b=a
print(a) #3
  • 通过 a & (-a) 快速获取a的最后为 1 位置的整数
00 00 01 01 -> 5
&
11 11 10 11 -> -5
---
00 00 00 01 -> 1

00 00 11 10 -> 14
&
11 11 00 10 -> -14
---
00 00 00 10 -> 2
  • 利用位运算实现整数集合
a | (1<<i)  -> 把 i 插入到集合中
a & ~(1<<i) -> 把 i 从集合中删除
a & (1<<i)  -> 判断 i 是否属于该集合(零不属于,非零属于)
  • 集合之间的操作
a 补   -> ~a
a 交 b -> a & b
a 并 b -> a | b
a 差 b -> a & (~b)
a = set([1, 3, 5, 7])
b = set([1, 3, 7, 8])
print(a & b){
     1, 3, 7}
print(a | b){
     1, 3, 5, 7, 8}
  • python中负数的补码形式
print(bin(3))  # 0b11
print(bin(-3))  # -0b11
print(bin(-3 & 0xffffffff))  
# 0b11111111111111111111111111111101
print(bin(0xfffffffd))       
# 0b11111111111111111111111111111101
print(0xfffffffd)  # 4294967293

你可能感兴趣的:(python)