周总结
day1
1.注释
注释是代码中对代码进行解释说明的文本内容
注释分为单行注释和多行注释
2.语句
python中一般是一条语句占一行,多条语句占一行要用分号隔开,语句过
长需要换行可以加"/"换行,但不能破坏数据本身
3.缩进
python有严格的缩进规则,代码具有高度的规范性,在开头的时候不能随便加缩进
但需要缩进的时候必须缩进
4.标识符
标识符就是由字母、数字、下划线组成,主要用来给变量命名,在2.x后面的版本中,可以用文字命名,但一般不使用
5.关键字
关键是是在python中具体特殊意义和功能的标识符,
注意:自定义变量命名是不能用关键字作为变量的名字
6.数据类型
int(整型),float(浮点型),str(字符串),bool(布尔)
7.类型转换
类型名(数据)
8.输入输出函数
print() - 输出函数
input() - 输入函数
9.进制转换
9.1.二进制
a.基数:0,1
b.进位:逢二进一 10(二进制) == 2(十进制)
c.位权:abc = a2^2 + b2^1 + c*2^0
d.表示方式:在二进制数前加前缀0b/0B
e.转换:bin(数字)
num1 = 0b1011
print(num1)
a = bin(12)
print("a = ",a)
9.2.八进制
a.基数:0 - 7
b.进位:逢八进一 10(8进制) == 8(十进制)
c.位权:abc = a8^2 + b8^1 + c*8^0
d.表示方式:在八进制数前加前缀 0o/0O
e.转换:oct(数字)
num2 = 0o67
print(num2)
b = oct(200)
print("b = ", b)
9.3.十六进制
a.基数:0,1,2,3,4,5,6,7,8,9,a/A,b/B,c/C,d/D,e/E,f/F (字母大小写都可以)
b.进位:逢十六进一 2d(十六进制) == 45(十进制)10(十六进制) == 16(十进制)
c.位权:111 = 16^2 + 16^1 + 16^0 = 273
d.表示方式:在十六进制数前加前缀 0x/0X
e.转换:hex(数字)
num3 = 0x89
print(num3)
c = hex(200)
print("c = ", c)
10.原码、反码和补码
计算机存数据的时候,只能存数字,而且存的是数字的二进制补码
位(bit)
字节(byte)
1字节 = 8bit
1kb = 1024byte
1M = 1024kb
1G = 1024M
1T = 1024G
注意:正数的原码、反码和补码一样
10.1.原码 = 符号位(0表示正,1表示负) + 真值(数字转换成二进制的值)
10 -> 1010(真值)
10的原码: 00000000 00000000 00000000 00001010
-10的原码: 10000000 00000000 00000000 00001010
10.2.负数反码 = 符号位不变,其他位取反(0变1,1变0)
10的反码: 00000000 00000000 00000000 00001010
-10的反码: 11111111 11111111 11111111 11110101
10.3.负数补码:反码加1
10的补码: 00000000 00000000 00000000 00001010
-10的补码: 11111111 11111111 11111111 11110110
10.4.计算机负数采用补码的原因:计算机没有减法器,负数采用原码进行加法运算
的时候结果不对,采用补码结果才对
11 运算符
python支持的运算符:数学运算符、比较运算符、逻辑运算符、位运算,赋值运算符
1.数学运算符: +,-,,/,%(取余),//(整除),(幂运算)
1.1.+,-,,/,和数学中加减乘除的功能一模一样
2.1.% - 求余数
a.判断一个数是否能被另外一个数整除
b.判断一个数的奇偶性:让数字对2取余,看结果是0还是1
c.获取一个数的最后几位数
num = 123
print(num % 10)
2.2.// - 求商,取商的整数部分(整除)
print(10 // 3)
num = 123
print(num // 100)
2.3.** - 幂运算(求次方值)
print(2**3)
print(16**0.5) #开平方
print(8**(1/3)) #开立方
3.比较运算符:>,<,>=,<=,==,!=
注意:所有的比较运算符的结果都是布尔值(不是True就是False)
,<,>=,<=和数学张总相应的比较运算符是一样的
== -判断是否相等
!= -判断是否不相等
python中比较大小的时候可以像数学一样连写表示范围
x = 20
print(1 <= x <= 100)
day2
变量
1.什么是变量
变量是在程序中开辟空间存储数据用的
2.怎么声明变量
2.1.语法
变量名 = 值
2.2.说明:
变量名 - 程序员自己命名
要求:是标识符,不能是关键字
规范:遵守PEP8命名规范 - 变量名中所有的字母都小写,如果变量名
由多个单词组成,单词之间用下划线隔开
见名知义 - 看见变量名大概知道变量中存储的是什么数据
= -> 赋值符号,将右边的值赋给左边的变量
值 - 任何有结果的表达式,可以是具体的数据,也可以是赋值过的变量,或者是
任何的运算表达式
3.1.声明变量
num = 10 # 将数字100存储到num中,使用num的时候就会使用num中存储的数据
num_1 = 20
num_2 = num_1
num_3 = num_1 + num
print(num_3)
num = 20
print(num)
同一个变量可以存储不同类型的值,但是变量必须先声明/赋值在使用
3.2.同时声明多个变量,赋相同的值
语法: 变量名1 = 变量名2 = ... = 变量名n = 值
a = b = c = 100
print(a, b, c)
3.3.同时声明多个变量,赋不同的值
变量的个数要和值的个数保持一致
语法:变量名1,变量名2,...,变量名n = 值1,值2,...,值n
name, age, sex = "小林", 18, "女"
print(name, age, sex)
3.4.声明变量和给变量赋值的原理(重要)
先在内存中开辟空间存储数据(内存空间的大小由数据的大小动态的分配),
然后再将保存数据的内存空间的地址赋给变量
用一个变量给另一个变量复制的时候,实质是将变量的地址赋给新的变量
num_4 = 300
print(type(num_4))
print(id(num_4)) # 获取变量中数据在内存中的地址
运算符
运算符:数学运算符、比较运算符、逻辑运算符、位运算、赋值运算符
3.逻辑运算符:and(逻辑与运算),or(逻辑或),not(逻辑非运算)
所有的逻辑运算符的运算对象是布尔,结果也是布尔
3.1 and:
a. 运算规则: 全真才真,有假则假
True and True - True
True and False - False
False and True - False
False and False - False
b.什么时候用:当希望多个条件同时满足的时候,就用and将多个条件连接。
and相当于生活中的并且
3.2 or
a.运算规则:全假才假,有真则真
True or True - True
True or False - True
False or True - True
False or False - False
b.什么时候用:当希望多个条件只要有一个条件满足的时候,
就用or将多个条件连接,or相当于生活中的或者
3.3 not
a.运算规则:True 变 False ,False 变 True
not True - False
not False - True
b.什么时候用;对某个条件进行否定
3.4 短路操作
逻辑与运算的短路操作:当and前面的表达式的值是False的时候,
程序不会在去执行and后面的表达式
逻辑或运算的短路操作:当or前面的表达式的值是True的时候,
程序不会在执行or后面的表达式
4.赋值运算符: =, +=, -=, *=, /=, %=, //=, **=
不管是什么样的赋值运算符,最终的操作都是给变量赋值;
所以赋值运算符的左边必须是变量
4.1 =: 将右边的值赋给左边的变量
4.2 复合的赋值运算符:现将赋值符号左边变量中的值取出来,
然后进行指定的运算,最后将运算结果重新赋值给左边的变量
注意:复合的赋值运算符的左边必须是已经赋值过的变量
位运算
位运算操作的是数字的补码的每一位;位运算因为是直接操作存储空间的每一位,
所以执行效率要比一般的运算要高很多
5.位运算: &(按位与运算),|(按位或运算),~(按位取反),^(按位异或),<<(左移),>>(右移)
5.1 按位与:数字1 & 数字2 -> 两个数字补码上相同位置上的数,如果都是1结果就是1,
如果有一个是0结果就是0
5.2 按位或:数字1 | 数字2 -> 两个数字补码上相同位置上的数,如果都是0结果就是0,
如果有一个是1结果就是1
5.3 按位取反:~数字 -> 将数字补码上的每一位的值由0变成1,由1变成0
5.4 ^异或:数字1 ^ 数字2 -> 两个数补码上相同位置上的值,
如果相同结果是0,不同结果是1
特点:一个数异或同一个数两次,结果就是这个数本身
5.5 << 左移 和 >> 右移
数字 << 位数(n) -> 让数字的补码整体左移n位,低位用0补充 -> 数字 * (2**n)
数字 >> 位数(n) -> 让数字的补码整体右移n位,正数高位补0,负数高位补1 -> 数字 // (2**n)
应用:
1.乘2的次方或者整除2的次方的操作 (<< >>)
2.数字 & 1 == 0 -> 偶数; 数字 & 1 == 1 -> 奇数
运算符的优先级:
数学 > 比较 > 逻辑 > 赋值
** > *,/,//,% > +,- > 位运算
如果有(),先算()里面的
day3
for循环
python中的循环有两种:for - in 循环和 while 循环
如果某段代码需要重复执行,就使用循环结构
1.for循环
1.1 语法:
for 变量名 in 序列:
循环体
1.2 说明:
for - 关键字
变量名 - 要求和声明变量的时候的变量名一样
in - 关键字
序列 - 容器型数据类型的数据,例如:字符串、列表、元组、字典、集合、
迭代器、生成器、range
循环体 - 和for保持一个缩进的一条或者多条语句:循环体中的代码就是
需要重复执行的代码
1.3 执行过程
让变量去序列中取值,一个一个的取,取完为止。每取一个值,执行一次循环体。
(python中控制for循环的循环次数,是通过控制in后面序列元素的个数来控制的)
for x in "hello":
print(x, end=" ")
for i in "hellohello":
print("=======")
for i in range(0, 10):
print("-----")
2.range函数:产生指定范围类的数字序列
a.range(n) - 产生0到n-1的整数数列
b.range(m,n) - 产生m到n-1的整数数列
c.range(m,n,step) - 从m开始每次加step产生下一个数,直到n-1为止
注意:如果for后面的变量不用,变量名用_表示
for _ in 序列:
sum1 = 0
for i in range(1, 101):
sum1 += i
print(sum1)
统计个数
n = 0
for i in range(1, 101):
if i % 2 == 0 and i % 3 != 0:
n += 1
print(n)
while循环
1.while循环
1.1 语法
while 条件语句:
循环体
1.2 说明
while - 关键字
条件语句 - 只要有结果的表达式都可以(赋值语句不行)
循环体 - 和while保持一个缩进的一条或者多条语句;需要
重复执行的代码就放在循环体中)
1.3 执行过程
先判断条件语句是否为True,如果为True,就执行循环体;执行完循环体
在判断条件语句是否为True,为True又执行循环体
...
以此类推
当判断条件语句的结果为False的时候,整个循环结束,执行后面的其他语句
1.4 for和while循环怎么选?
循环次数确定的时候使用for循环
循环次数不确定和死循环要使用while循环
while True:
num = int(input("请输入数字:"))
if num == 0:
break
while True:
pass_word = 123456
dense = int(input("请输入密码:"))
if dense != pass_word:
print("密码错误!请重新输入")
else:
break
count = 0
while True:
num = int(input("请输入数字:"))
if num == 0:
break
else:
if num & 1 == 0:
count += 1
print(count)
1.continue
continue是只能出现在循环体中的关键字;
当执行循环体的时候遇到了continue,当次循环直接结束,直接进入下次循环的判断
2.break
只能用在循环体中的关键字;
执行循环体的时候,如果遇到break,整个循环直接结束
sum1 = 0
num = 1
while True:
sum1 += num
if sum1 > 100000:
print(num - 1)
break
num += 1
3.else
for 变量 in 序列:
循环体
else:
代码段
while 条件语句:
循环体
else:
代码段
执行过程:如果循环自然死亡(自然结束)else后面的代码段会执行;
如果循环是因为遇到break而结束,else后面的代码段不会执行
day4
数据列表
1.什么是列表(list)
列表是容器型数据类型(序列),将中括号作为容器的标志,多个元素用逗号隔开,->[元素1,...,元素n]
特点:可变的(指的是列表中元素可变 - 元素支持增删改),有序的(支持下标操作)
2.声明列表
变量名 = [元素1,..,元素n]
[] -> 空列表
3.列表中的元素:任何类型的数据都可以作为列表元素;同一个列表中数据的类型可以不一样
4.获取列表中的元素(查)
4.1 获取单个元素
a.语法:
列表[下标] - 获取列表中指定下标对应的元素
b.说明:
列表 - 结果是列表的表达式(列表数据、列表变量等)
[] - 固定写法
下标 - 下标又叫索引;列表中每个元素都有固定的下标值来表示元素在列表中的位置。
范围1:0 - 长度-1 (从前往后的第一个元素、第二个元素...)
范围2:-1...-长度 (从后往前数,倒数第一个元素,倒数第二个圆....)
注意:下标不能越界(超过范围)
4.2 获取部分元素
列表切片的结果是小列表
a.语法:
列表[开始下标:结束下标:步长] - 从开始下标开始,每次增加步长的值去取下一个元素,
直到取到结束下标前为止
(在列表中获取range(开始下标,结束下标,步长))
产生的数字序列作为下标的元素
注意:
步长为正表示开始下标到结束下标是从前往后取,所以开始下标对应的元素必须在结束下标对应
元素的前面,否则结果是[]
步车为负表示开始下标到结束下标是从后往前取,所以开始下标对应的元素必须在结束下标对应
元素的后面,否则结果是[]
省略步长;列表[开始下标:结束下标] -- 相当于步长是1
省略下标:
省略开始下标:[:结束下标]/ [:结束下标:步长]
省略开始下标:步长为正,从第一个元素开始往后取,步长为负,从最后一个元素开始往前取
省略结束下标:[开始下标::步长]/[开始下标:]
省略结束下标:步长为正,取到最后一个位置;步长为负,取到第一个为止
两个下标都省略:列表[::步长]/[:]
4.3 遍历 - 将列表中的元素一个一个的取出来
a.直接遍历元素
for 变量 in 列表:
循环体
b.通过遍历下标来遍历列表元素
len(列表) - 获取列表中元素的个数
for index in range(len(列表)):
循环体
增删改
- 增(增加列表中的元素)
1.1 列表.append(元素) - 在列表的最后添加一个元素
1.2.列表.insert(下标,元素) - 在列表指定下标前插入一个元素
- 删(删除列表中的元素)
2.1.del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)
2.2.remove(元素) - 删除列表中第一个指定元素 (元素必须存在)
2.3.列表.pop(下标) - 取出列表中指定下标对应的元素,返回被取出的元素
列表.pop() - 取出列表中最后一个元素,返回被取出的元素
- 改(修改列表中元素的值)
列表[下标] = 新值 - 下标不能越界