今日课程概述:
运算符:
位运算符
转义符
数据转化的方法
int()
float()
bool()
str() --- 将数据转化为字符串类型
list() --- 将其他序列转化为列表类型
tuple()--- 将其他序列转化为元组类型
set () --- 将其他序列转化为集合类型
dict(双层序列 或者 key=value)--- 将数据转化为字典类型
获取某个字符对应的十进制数据
将十进制数据转化为某个字符
获取指定整数的二进制格式
获取指定整数的八进制格式
获取指定整数的十六进制格式
range方法的使用
生成一个连续的序列
设置开始与结束 生成连续的数值序列
随机模块的使用
random
获取一些随机的数据
流程控制语句
顺序语句
分支语句
循环语句
1.位运算符【以8位为例】
针对二进制来进行运算
数据计算是采用的二进制的补码的状态
规则:将1视作True 0视作False
按位与 &
两个数据二进制(八位)数据 上下对应运算 一假则全假 上下位有一个为0 这一位结果就为0
6 & 7
0000 0110
0000 0111
-------------
0000 0110 -------> 6
按位或 |
两个数据二进制(八位)数据 上下对应运算 一真则全真 上下位有一个为1 这一位结果就为1
6 | 7
0000 0110
0000 0111
-------------
0000 0111 -------> 7
按位异或 ^
两个二进制数据 上下位对应进行运算 相同为假 不同为真,上下位一样结果为0 不一样为1
6 ^ 7
0000 0110
0000 0111
--------------
00000001 -------> 7
总结:
一个数与相同的数异或两次 结果是其本身 -------> 可以用于简单加密
还可以用于两个变量值的交换
1 ^ 7
0000 0001
0000 0111
-------------
0000 0110 ---------> 6
例:
交换两个变量的值:
x = 19
y = 21
-----> x = 21 y = 19
Python中交换两个变量的值及其简单
x , y = y, x [记住]
借助异或交换两个变量的值
x = x ^ y # x = 19 ^ 21
y = x ^ y # 19 ^ 21 ^ 21 = 19
x = x ^ y # 19^ 21 ^ 19 = 21
其他语言中交换两个变量的值 借助第三方变量
x = y #x = 21
y = x # y = 21
#声明一个变量 接受其中一个变量的数据 保存该数据
z = x # z = 19
x = y # x = 21
y = z # y = 19
参照与数学中的距离差 距离和
x = 19
y = 21
x = x + y #x = 19 + 21
y = x - y # 19 + 21 - 21 = 19
x = x - y # 19 + 21 - 19 = 21
按位取反 ~
将二进制上的每一位 0变1 1变0
~7
0000 0111
~
--------------
1111 1000(这里为补码)--->反码:1111 0111 ----> 原码:1000 1000 ----> -8
按位左移
<<
将二进制数据 向左的方向移动对应的位数 右边空出补 0
2 << 3
0000 0010
0 0010000 -----> 0001 0000 = 16
1 << 3
0000 0001
0 0001000 ----> 0000 1000 = 8
3 << 3
0000 0011
0 0011000 ----> 0001 1000 = 24
数据 * 2 ** 移动的位数 (2 * 2 ** 3)= 16
按位右移
>>
将二进制数据 向右的方向移动对应的位数 左边空出正数补0,负数补1
48 >> 2
0011 0000
0000 1100---> 12
-32 >> 2
1010 0000 (原码)
1101 1111 (反码)
1110 0000 (补码)
1111 1000 ---->(反码)1111 0111 ----> (原码) 1000 1000 = -8
总结: 数据 // (2 ** 移动的位数)
2.转义符
\ --- 将其后的某些指定的字母 转化成其他含义
\n --- 换行 (若果想保持n的本意 \\n)
\r --- 回车
\t --- 制表符 (Tab键的作用)
\f --- 换页符
字符串中如果设置的是路径 windows路径的分割线 \
s = "C:\\Documents\\讲课内容\\BJ_Python1908\\day03\\note"print(s)'''用r来标记字符串 可以保持路径中\的本意 不再具有转义符的含义'''s = r"C:\Documents\讲课内容\BJ_Python1908\day03\note"print(s)
运算符优先级的问题
** --- 优先等级最高
- + ~ ----> 按位取反 正负号的优先等级次之 -10 +10
* / // %
+ - ----> 加减法
>> <<
&
| ^
> < >= <=
==, !=
=, += -= *= /= //= %= **=
is is not
in not in
not and or
注意:记不住的话 使用小括号提高优先等级
3.数据转化
1.获取某个字符对应的十进制数据
ord(字符)
2.获取十进制数据对应的字符
chr(十进制数据)
3.将指定数据(整数)转化为二进制数据
bin(数据) ----> 字符串格式的二进制
4.将指定数据(整数)转化为八进制数据
oct(数据) ---> 字符串格式的八进制
5.将指定数据(整数)转化为十六进制
hex(数据) ---> 字符串格式的十六进制
6.将数据转化为字符串格式
str(数据) --- > 将数据转化为字符串格式
例: str([12,13,15])===> "[12,13,15]"
ch = input("请输入一个字符:") v = ord(ch)#只能接受长度为1的字符串,否则报错,将指定字符串转化为十进制数据 print(v) # 获取十进制数据对应字符 ch = chr(119) print(ch) #获取二进制数据 res = bin(10) print(res,type(res)) #获取八进制数据 res = otc(0b101011011) print(res,type(res)) #获取十六进制数据 res = hex(0b1011010101010111101) print(res,type(res)) s = 10 s1 = "a" res = s1 + str(s) print(res)
4.range方法的使用
range是根据设置的数据起始值 与 结束值 生成一系列整数
生成的是整数序列 --- 是一个range类型的数据 看不到序列中到底有什么数据
所以一般情况下 想看序列中方的数据 需要对其进行转换 -- 一般情况下转换为列表
1.range(stop)---
从0开始 步长为1 到stop - 1结束
用区间表示[0,stop]
2.range(start,stop,step)
step可以省略 表示的步长 默认为1
从start的开始 按照补偿step依次递增 到 stop结束
nums = range(10) print(nums)#range(0, 10) v = list(nums) print(v)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] n = list(range(1,10)) print(n)#[1, 2, 3, 4, 5, 6, 7, 8, 9] n1 = list(range(1,10,2))#[1, 3, 5, 7, 9] print(n1) n2 = list(range(10,1,-2)) print(n2)#[10, 8, 6, 4, 2]
5.随机模块
random (接下来的序列可以使用range)
choice(序列) ----> 在序列中随机选择一个元素
random() ---> 在 0 与 1 之间随机生成一个小数
randint(start ,stop) 在[start ,stop]之间任意选取一个数据
randrange(start ,stop,step)
在以start开始 步长为step 到stop -1 依次递增 / 递减的序列中随机选择一个整数
sample(序列 , 个数)在指定的序列中随机选择不重复的指定个数的元素,将获取元素存放于列表中
import random v = random.choice("abcdefghijklmnopqrstuvwxyz")#在指定数据中随机选择一个元素 print(v) v1 = random.choice(range(1,101)) print(v1) v2 = random.random()#在0-10之间随机生成一个小数,包含0,不包含1 v3 = random.randint(100,500)#在100-500之间任意选取一个整数 #randrange(start, stop, step) v4 = random.randrange(10,50)#在10-49之间随机选择一个整数 v5 = random.randrange(10,0,-2)#10 8 6 4 2 v6 = random.sample(range(1,101),5)#在指定的序列中选择不重复的指定个数的元素,将获取的元素放到列表中
string字符串模块
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
asscii_letters = ascii_lowercase + ascii_uppercase
digits = '0123456789'
import string print("所有英文字母:",string.ascii_letters) print("所有的数字:",string.digits)
6.流程控制语句
1.语句:独立的一个体系,自成语法
编程语言中语句结束的标志是 ;--->分号
例:
print(123);print(456);print(789)
以上的代码以分号隔开,在Python中也可以执行,不会报错
Python中语句结束时也可以使用分号分割, 默认不写
如果一行中存在多条语句 必须使用分号将语句分割 --- 建议一条语句占一行
2.顺序语句
表示的代码执行的执行过程 :从上往下执行的
3.分支语句
--- 判断语句 if
什么情况下使用分支语句
出现多种情况分析时,就是用分支语句
if语句有三种格式:
1.if单语句
一个情况的分析
格式:
if 条件判断表达式:
[tab缩进]执行语句
解读:
当条件判断表达式成立时 执行对应的语句 if语句结束 继续向下执行与if平级的语句
如果不成立 if语句直接结束 向下执行与if平级的语句
案例:
验证数据是否是偶数:
偶数的特点: 能被2整除 ====> 这个数除以2余数为0
num % 2 == 0
2.if-else语句
两种情况的分析
格式:
if 条件表达式:
语句1
else:
语句2
解读:
当条件表达式成立的时候 执行的是if包含的语句 if-else语句结束 向下继续执行
否则执行的是else包含的语句 if-else语句结束 向下继续执行
案例:
验证年是否是闰年:
条件: 1. 能被4整除 但是不能被100整除
2.能被400整除
1和2之间是或者的关系
获取字符对应的十进制数据 -- ord
需求:
键盘录入一个字符:
如果该字符是小写英文字母 将其转化为大写英文字母输出
否则输出字符本身
三元运算符:
结果变量 = 条件表达式 and 表达式1 or 表达式2
有bug bug是0 --- 肯定就不能再用了
求两个数的最大值 0 和 1
用if-else组成的另外一种三元运算符的格式:
结果变量 = 表达式1 if 条件表达式 else 表达式2
3.if-elif-else
多种情况的分析
if 条件表达式1:
语句1
elif 条件表达式2:
语句2
...
elif 条件表达式n:
语句n
else:
语句 n+1
elif ---> else if --->否则如果
当条件表达式有一个成立的时候 就不会再出现否则情况了 整个if语句结束
案例:
键盘录入一个成绩
>=90 A
90>x>=80 B
80>x>=70 C
70>x>=60 D
其他 E
语句的嵌套:
在需求中 满足某种的要求下 还需要在进行其他的判定 可以使用语句嵌套
案例:
获取指定月的天数
1 3 5 7 8 10 12 ---> 31
4 6 9 11 ----> 30
2
闰年 29天
平年 28天
3.循环语句
循环 --- 周而复始的重复做某件事
周而复始没有停止 --- 死循环
需要循环次数的限制
确定次数 或者 满足某种需求 就结束了
Python提供了两种循环机制:
while循环 和 for循环
for --- 用于遍历序列 --- 完成次数限制
while -- 满足需求的限制
while循环:
两种格式:
1.while循环
格式:
while 条件表达式:
重复做的事情
解读:
当条件表达式成立 执行重复操作的事情 一直到条件表达式不成立 循环结束 继续向下执行与while平级的语句
案例:
向Python打10遍招呼
2.while-else
格式:
while 条件表达式:
重复执行的行为
else:
当且仅当条件表达式不成立的时候
break中断 是不会走else的
3.break
只作用于循环 结束当前所在的循环
4.死循环
while 1:
语句
或者
while True:
语句