1、单引号和双引号区别
print('game over')
print('game over\n')
print("game over\n")
print("game over")
2、如何实现字符数的打印
print("\"life is short,let\'s learn python.\"")
print(r"life is short,let's learn python.")
print(f"life is short,let's learn python.")指定f是什么意思,format
3、字符串相加
‘520’ + ‘1314’
‘5201314’
4、input用于接收用户的输入并且返回
5、while循环配合break语句
6、if else语句
7、random模块
import random 输入模块
>>> import random
>>> random.randint(1,100)
此时random生成的随机数是可以被重现的,如何实现对伪随机数的工具呢?
只要获取到了生成随机数的种子以后就能复现出来。
获取随机数种子:
x=random.getstate() 随机数内部的生成状态保存到x变量中,x是一系列数字
random.randint(1,100)
random.setstate(x)不管之前生成的是什么随机数,在这里设置了它的种子以后就能复现。
random.randint(1,100) 此时能复现之前的随机数,这里的作用是什么??
P9 数据类型上
1、import decimal模块
a=decimal.Decimal('0.1')
b=decimal.Decimal('0.2')
2、复数1+2j
x=1+2j
x.real获取实部,x.imag获取虚部
P10 数据类型下--几个常用的命令
补充一下取整的概念:取比目标结果小的最大整数
int(4.14)
float('12.4')可以通过字符串进行转换,字符串中间不能由空格
P11 bool类型
1、bool()内置函数可以判断类型
bool(Ture)
2、几种判断为错的类型:
bool(False)
bool("")
bool(0)
bool(0.0)
bool(0j)
3、Python中if __name__ == ‘__main__‘:的作用和原理:内置变量__name__什么时候是字符串‘__main__’,在单独作为模块运行的时候
True == 1
4、逻辑运算符
and
or
not
在python中任何对象都能进行真值测试,也可以作为布尔裸机运算符的操作数。
3 and 4
4 or 5
“fishc” and "love"
"fishc" or 250
如何理解python中的变量,数值,对象。
P12 短路逻辑和运算法优先级
1、短路逻辑:
从左到右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
3 and 4 ==>4
3 or 4 ==> 3
(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) ==>4
注意not 1的结果不是0,而是False
0 and 3 ==>0
1 and 3 ==>3
2、运算符优先级
注意: not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 or 9 ==>4
False or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 or 9
False or 0 or 3 and 4 or 5 and 6 or 7 and 8 or 9
False or 0 or 4 or 6 or 8 or 9
P15 了不起的分支和循环-1
P16 了不起的分支和循环-2-分支结构
P17 了不起的分支和循环-3-循环结构-break语句
while
P18 了不起的分支和循环-4-循环结构-continue
1、while还能和else配合使用!!
注意:python中的while后面的else的作用是指,当while循环正常执行,中间没有break的时候,会执else后面的语句。但是如果while语句中有brerak,那么就不会执行else后面的内容了。
2、循环嵌套
比如实现乘法
i=1
while i<=9:
j=1
while j <= i
print(i, "*", j, j*i, end=" ")
j+=1
print()
i+=1
P18 了不起的分支和循环-4-循环结构-for
1、语法
for 变量 in 可迭代对象
statement(s)
例如
for each in "Fishc":
print(each)
也可以用while实现
while i < len("FishC"):
print("FishC"[i])
i += 1
2、range函数--经常和for循环一起使用
range(stop)
range(start,stop)
range(start,stop, step)
3、找出10以内的素数--除了1和本身外不能被整除
for n in range(2,10):
for x in range(2,n):
if(n%x == 0):
print(n, "=" , x, "*", n//x)
else:
print(n, "is a primary")
P20 列表-1
1、创建列表
rhyme=[1,2,3,4,5,"abcdef"]
2、如果想访问某一个元素
rhyme[0] rhyme[1] rhyme[2]
或者用长度访问最后一个rhyme[-1]
甚至可以打印中间的一段:rhyme[0:3] rhyme[3:6] rhyme[:3] rhyme[3:] rhyme[:]
甚至页可以跳读:rhyme[0:6:2]起始地址,结束地址和步长
甚至还可以逆着输出:rhyme[::-1]
P21 列表-2
1、列表增删改查
hero = ["111", "333"]
hero.append("555")
hero.extend(["777","999"]) 注意这里的追加是直接追加在后面,并且extend方法参数必须是一个可迭代对象
s=[1,2,3,4,5]
s[len(s):]=6 在后面追加6
s[len(s):]=[7.8.9]
2、insert方法
s=[1,3,5]
s.insert(1,2) 在第一个位置插入2
3、remove方法删除
remove("555") 只会删除第一个匹配的元素,如果不纯在就会报错
4、出栈pop方法
hero.pop(1) 把第一个元素出栈
5、clear方法
P22 列表-3
nums = [3,5,3,1,6,8,9]
1、排序sort方法
nums.sort()
2、逆序
nums=reverse()
3、sort参数其实是有两个的。s.sort(key=None,reverse=False)
4、查找nums.count(3)
5、查找索引值:nums.index(3)
6、查找索引nums.index(3,1,7)要找的元素是3,从第一个到第七个之间找
7、copy方法:(注意,这里都是浅拷贝,深拷贝是什么意思?)
拷贝全部:nums_copy1 = nums.copy()
切片拷贝:nums_copy2 = nums[:] 没有指定切片
P23 列表-4
1、列表相乘
s=[1,2,3]
t=s*3
2、列表相加
s =[1,2,3]
t =[2,3,5]
s+t
3、嵌套列表
matrix = [[1,2,3],[4,5,6],[7,8,9]]
或者matrix = [
[1,2,3]
[4,5,6]
[7,8,9]
]
4、访问嵌套列表
(1)
for i in matrix:
for each in i:
print(each)
(2)
for i in matrix:
for each in i:
print(each,end=' ')
print()
(3)
matrix[0]
matrix[0][0]
(4)A=[0]*3创建一个3个元素的列表
(5)for i in range(3)
A[i] = [0] *3
(6)B = [[0]*3]*3 注意A和B是有区别的,B中第一行和第二行第三行是指向同一个对象
5、is运算符--用于判断是否指向同一个对象
P24 列表-5
1、浅拷贝和深拷贝
x = [1,2,3]
y = x
这个时候x指向列表,然后把y也指向这个列表
只有通过拷贝才能能实现完全的数据分离
x = [1,2,3]
y = x.copy()
2、实现拷贝的另一种方法--切片
x = [1,2,3]
y = x[:]
以上你都是浅拷贝,在一维列表中没有任何问题。
3、如果在嵌套列表中使用浅拷贝是有问题的
x = [[1,2,3],[4,5,6],[7,8,9]]
y = x.copy() 注意浅拷贝只是拷贝了外层的对象。
4、如何实现深拷贝
import copy 加载模块
x = [[1,2,3],[4,5,6],[7,8,9]]
y = copy.copy(x) 浅拷贝
y = copy.deepcopy(x) 深拷贝
P25 列表-6-列表推导式
推导式的语法:[expression for target in iterable]
oho = [1,2,3,4,5]
oho = [i*3 for i in oho] 这就是列表推导式
注意:for row in matrix的意思是获取矩阵的每一行
P26 列表-7
S = [[0]*3 for i in range(3)]
1、列表推导是进阶
[express for taget in iterable if condition]
even = [i+1 for i in range(10) if i % 2 == 0]
2、展开一个2维列表
matrix = [[1,2,3], [4,5,6], [7,8,9]]
flatten = [col for row in matrix for col in row] 这个时候col变量没有声明,所以不能打印
3、将展开的合并成二维列表
flatten = [ ]
for row in matrix:
for col in row:
flatten.append(col)
P27 元组
1、元组不支持修改,只有切片和index
2、相加,相乘,元组嵌套
3、迭代
s= (1,2,3)
t = (4,5,6)
w = s,t
w =((1,2,3),(4,5,6))
for each in s:
print(each)
for each in w:
for i in each:
print(i)
4、元组推导式---实际上没有这个东西
s = (1,2,3,4,5)
[each * 2 for each in s] 可以生成列表
5、如何生成只有一个元素的元组
type(x)获取变量的类型查看
x= (520) 这种事错误的
x = (520,)
6、解包和打包
t = (123,"111",3.14) 打包的过程
x,y,z = t 解包的过程
同理其他也可以实现
t = [123,"Fishc",3.14]
x,y,z = t
甚至字符串都可以这样写:
a,b,*c = "FishC"
7、什么情况元组是可以修改的?
s = [1,2,3]
t = [4,5,6]
w=(s,t)
w
([1,2,3],[4,5,6])
w[0][0] = 0 通过这里修改元组指向的列表修改其值
P28 字符串1
1、判断一个整数是否是回文数
通过一个字符串的形式可以实现
“是回文数” if x == x[::-1] else “不是回文数”
2、大小写字母换来换去函数
capitalize() 第一个大写
casefold() 全部小写
title() 每个单词的首字符大写
swapcase() 字符串大小写翻转
upper() 变大小
lower() 变小写
3、左中右对齐
center(width, fillchar=' ') 指定宽度对齐,用空格填充,如果足够就用源字符串填充
ljust(width,fillchar=' ') 指定左对齐
rjust(width,fillchar=' ')
zfill(width)用0填充左侧
P29字符串2-查找
1、查找
count(sub[, start[, end]]) 查找子字符串中出现的次数,可以指定起始和结束位置
find(sub[,start[, end]]) 查找子字符串的下标
rfind(sub[,start[,end]])
index(sub[, start[, end]])
rindex(sub[, start[, end]])
x="122333456785432"
x.count("23", 0, 5)
2、代码自动对齐
code.expandtabs(4)
3、replace替换方法
replace(old,new,count=-1)
4、根据转换表进行转换
table = str.maketrans("ABCDEFG", "1234567")
"I love AAbbCC".translate(table)