Python基础入门:变量运算符,数据类型与位运算
学习目标:
掌握Python基础知识
学习内容:
1、 变量、运算符与数据类型
2、 位运算
学习产出:
1.1.注释
# 这是一个单行注释
print("Hello world")
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello china")
"""
三个双引号也是多行注释
"""
print("hello china")
1.2.运算符
python的运算符与其它语言没有很大的差别
比较运算符
print(2 > 1) # True
print(2 >= 4) # False
print(1 < 2) # True
print(5 <= 2) # False
print(3 == 4) # False
print(3 != 5) # True
逻辑运算符
print((3 > 2) and (3 < 5)) # True
print((1 > 3) or (9 < 2)) # False
#not是逻辑判断词,用于布尔型True和False,not True为False,not False为True
print(not (2 > 1)) # False
三元运算符
#没有使用三元运算符的写法
x, y = 4, 5
if x < y:
small = x
else:
small = y
#使用三元运算符的写法
small = x if x < y else y
其它运算符
#两个变量均为不可变类型
a = "hello"
b = "hello"
print(a is b, a == b) # True True
print(a is not b, a != b) # False False
#两个变量均为可变类型
a = ["hello"]
b = ["hello"]
print(a is b, a == b) # False True
print(a is not b, a != b) # True False
知识点
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值
但是如果比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
1.3.变量与赋值
在使用变量之前,需要对其先赋值。
变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
Python 变量名是大小写敏感的,foo!= Foo。
myTeacher = "老马的程序人生"
yourTeacher = "小马的程序人生"
ourTeacher = myTeacher + ',' + yourTeacher
print(ourTeacher) # 老马的程序人生,小马的程序人生
#如果重新赋值,旧值会被覆盖
myTeacher = "老老马的程序人生"
print(ourTeacher) # 老老马的程序人生,小马的程序人生
1.4.数据类型与转换
python中的数据类型常有的有
int 整形
float 浮点型
bool 布尔型
int整形
a = 1031
print(a, type(a))#type可以查看数据类型
# 1031 <class 'int'>
#bin()方法是将int类型数据转化为二进制
print(bin(a)) # 0b10000000111
print(a.bit_length()) # 11
float 浮点型
print(1., type(1.))
# 1.0 <class 'float'>
#想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。
bool类型不再阐述
1.5.位运算
二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。
原码:就是其二进制表示(注意,有一位符号位)。
00 00 00 11 -> 3
10 00 00 11 -> -3
反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)
00 00 00 11 -> 3
11 11 11 00 -> -3
补码:正数的补码就是原码,负数的补码是反码+1。
00 00 00 11 -> 3
11 11 11 01 -> -3
按位非操作 ~
“~” 把num的补码中的 0 和 1 全部取反(0 变为 1,1 变为 0)有符号整数的符号位在 ~ 运算中同样会取反。
“~ 1 = 0”
“~ 0 = 1”
按位与操作 &
只有两个对应位都为 1 时才为 1
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
按位或操作 |
只要两个对应位中有一个 1 时就为 1
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
按位异或操作 ^
只有两个对应位不同时才为 1
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
按位左移操作 <<
将num的二进制表示向左移动i位所得的值
00 00 10 11 -> 11
11 << 3
01 01 10 00 -> 88
按位右移操作 >>
00 00 10 11 -> 11
11 >> 2
00 00 00 10 -> 2
数据及代码源于"AI训练营Python-阿里云天池"