目标:数据类型转换
常见的运算符
程序控制流程
数据类型转换:
自动类型转换:
布尔类型和数值型,可以自动类型转换
在计算机中,布尔类型:True -> 1 False -> 0
强制类型转换:
python字符串是无法和布尔类型,以及数值型进行自动类型转换
str(数值|布尔) # 将数值或布尔转换字符串
int(字符串) # 将字符串转换为整数
float(字符串) # 将字符串转换为浮点数
例题
常见的运算符:
算术运算符:
+
-
*
/
% # 求余数
// # 整除,地板除法
** # 幂次方,相当也有了开根号
关系(比较)运算符:
>
<
>=
<=
==
!=
返回结果是一个布尔类型
逻辑运算符:
与 and # 并且关系
或 or # 或者关系
非 not # 不是、取反
所属运算符
in # 判断某个值是否在一个容器中
not in # 判断某个值是否不在一个容器中
注意:python中没有自加和自减运算符!!!!
i++ ++i i-- --i # 没有
赋值符:
= # 将等号右侧的值,赋值到左侧,等于赋值符的优先级别非常低
二元赋值符:
+= # a += 1 <=> a = a + 1
-= ……
*=
/=
**=
//=
%=
三目运算符:
其他编程语言中: 表达式 ? 值1 : 值2
python中三目运算符:
值1 if 表达式 else 值2
案例:
a = 20
b = 10
c = "liujianhong" if a > b else "Jianhong Liu"
# 最后结果就是c的值是"liujianhong"
位运算符:
bit:计算机中最小的单位
byte:字节,计算机中的基本单位,一个字节=8个位
& # 与运算
| # 或运算
^ # 异或运算
~ # 按位取反
<< # 左移运算
>> # 右移运算
例题
n1 = 10 # 0000 1010
n2 = 11 # 0000 1011
n1 + n2 = 21
0000 1010
0000 1011 +
---------------
0001 0101 # 21
一旦引入负数,为了表示正负(+-)符号,固定最高位称为符号位,用来表示正负
符号位:0表示正数
1表示负数
n3 = -1 # 1000 0001
n4 = -2 # 1000 0010
n3 + n4 = -3
1000 0001
1000 0010 +
-------------------
10000 0011 溢出一个位,因此结果是:0000 0011 = 3
在二进制,如果数值是正数,进行运算,和十进制一样,结果正常
但是如果引入负数,结果的错误!!!
为了解决这个问题,计算机学家,如下的三个概念:
原码:就是数字的二进制位
反码:符号位不变,其余各位都统统取反
补码:反码 + 1
1000 0001 1111 1110 1111 1111 (-1的补码)
1000 0010 1111 1101 1111 1110 (-2的补码)
计算机中所有二进制都是以补码运算的(解决负数问题)
1111 1111
1111 1110 +
---------------
1111 1101 (补码!!!)
1111 1100 反码
1000 0011 -3
与运算 &
n1 = 10 # 0000 1010
n2 = 11 # 0000 1011
n1 | n2
0000 1010
0000 1011 |
------------------
0000 1010 10
或运算 &
0000 1010
0000 1011 &
------------------
0000 1011 11
异或运算 ^ 相反为真
0000 1010
0000 1011 &
------------------
0000 0001 1
按位取反 ~
~0000 1010
左移 <<
右移 >>
注意:python中的右移都是无符号右移,不存在有符号右移
全局函数:
print() # 标准输出
input() # 标准输入
type() # 类型判断函数
int() # 将数值或布尔转换字符串
float() # 将字符串转换为整数
str() # 将字符串转换为浮点数
程序控制流程
控制语句之间的关联关系,实现逻辑性的
|-- 顺序
从上到下、从左到右执行流程
|-- 选择
单分支:
if 条件:
# 缩进体就是符合条件,需要执行的暧昧
双分支:
if 条件:
# 条件成立时,要执行的代码
else:
# 条件不成立的时候,需要执行的代码
多(三)分支:
if condition1:
# 条件1成立时,要执行的代码
elif condition2:
# 条件2成立时,要执行的代码
……
[else:
# 剩余条件
]
|-- 循环
例题