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)