python速学_python学习笔记(自学/速成)

  • Post author:
  • Post category:python


Python学习笔记

Chapter2 变量

2.1 title/upper/lower

title 首字母大写,非首字母小写

upper 全大写

lower 全小写

sNane = “alloSAD HERop”

print(sNane.title())

print(sNane.upper())

print(sNane.lower())

2.2 去除空格

rstrip 去除左边空格

lstrip 去除右边空格

strip 去除左右空格

sText = ” howd ihiu gi hboip! ”

print(“111″+sText.rstrip()+”111”)

print(“111″+sText.lstrip()+”111”)

print(“111″+sText.strip()+”111”)

Chapter3 语法初步

3.1 整除 //

整除符号 //,结果忽略小数部分

3.2 绝对值abs/ 四舍五入round/ 向上取整ceil/向下取整floor

abs 返回一个数的绝对值

round 返回一个数四舍五入后的值

ceil 向上取整

floor 向下取整

3.3 占位符 %s %d %.2f

%d 指一个整数

%.2f 指一个浮点数,保留两位小数

%s 字符串

%c 字符

sName = “Mary”

fPrice = 128.36

n = 5

sText = “%s has %d lambs, each lamb worth %.2f yuan. So, these lambs worth %.1f yuan. If in total.” % (sName,n,fPrice,fPrice*n)

print(sText)

#Mary has 5 lambs, each lamb worth 128.36 yuan. So, these lambs worth 641.8 yuan. If in total.

3.4 进制 转16进制hex / 转2进制bin

0x 16进制

0b 2进制

hex() 数字转换为16进制

bin() 数字转换为二进制

%x 以16进制输出

Chapter4 列表

4.1 append/insert/pop/del/remove

append(x) 在列表尾部添加元素x

insert(index,x) 在index位置添加元素x,其中index从0开始

pop() 从列表尾部删除元素,并且返回删除的值(若pop(index) 则删除对应位置的元素)

del list[index] 删除index位置的元素

remove(x) 移除第一个遇到的x元素

4.2 sort/sorted排序与倒序

sort 会改变列表元素的顺序

list.sort() 按递增(非递减)排序

list.sort(key=len) 使用len函数为每一个元素生成键值,按结果大小递增排序

list.sort(reverse=True) 按递减(非递增)排序

sorted(list) 不会改变列表元素的顺序 按递增(非递减)排序

list.reverse() 将列表元素顺序倒置

4.3 数值列表range(x)/range(x,y)/range(x,y,z)

range(x) 从0到x(不包含x)

range(x,y) 从x到y (包含x,不包含y)

range(x,y,z) 从x到y,步长为z (包含x,不包含y)

4.4 列表/矩阵快速生成

生成列表:

cubs = [x**3+100 for x in range(1,11)]

print(cubs)

#[101, 108, 127, 164, 225, 316, 443, 612, 829, 1100]

生成10行8列矩阵:

matrix = [[0]*8]*10

print(matrix)

#更复杂

matrix = [[r*c for c in range(8)] for r in range(10)]

print(matrix)

matrix = [x + y for x in “abs” for y in “0123”]

print(matrix)

#[‘a0’, ‘a1’, ‘a2’, ‘a3’, ‘b0’, ‘b1’, ‘b2’, ‘b3’, ‘s0’, ‘s1’, ‘s2’, ‘s3’]

4.5 列表拼接/乘*

list + list = list

list * n n为数字,列表将重复n次

string*n n为数字,字符串将重复n次

4.6 count()计数/clear()/extend()/index

list.count(x) 返回列表中x出现的次数

list.clear() 清空列表所有元素

list.index(x) 返回x的下标

4.6 列表复制

copy2 = list 将list地址传给copy2

copy2 = list.copy() 将list复制给copy2,传值而非传地址

id(list) 返回list的地址

4.7 (list/string)切片/切片用于复制,倒置/批量修改元素

list[x:y] 从下标x一直复制到y (包含x但不包含y)

list[x:] 从x一直复制到列表尾部(包含最后元素)

list[:y] 从第一个元素一直复制到y(不包含y)

list[x:y:z] 从下标x一直复制到y,步长为z (包含x但不包含y)

list2 = list[:] 将list复制给list2(传值而非传地址)

list2 = list[::-1] 将list的元素倒置,再复制给list2(传值而非传地址)

list[2:4] = 77,78 将2和3位置的元素修改为77、78

Chapter5 元组、集合

5.1 元组-只读的列表

元祖是只读列表。创建后只能读与操作,不能修改其元素与顺序。(可以切片/将不同元组连接)

patient = (1,2,3,4,5,6)

print(type(patient),patient)

print(patient[1:4])

print((1,2)+(3,4)+(5,))

print((1,2)*5)

”’

(1, 2, 3, 4, 5, 6)

(2, 3, 4)

(1, 2, 3, 4, 5)

(1, 2, 1, 2, 1, 2, 1, 2, 1, 2)

”’

5.2 集合

集合不允许重复的元素,同时,集合的元素不分前后顺序,不能使用下标访问集合,集合元素不能是列表、字典、集合

set() 创建集合 或 大括号{}

生成集合时,多余的元素将会被剔除掉

5.2.1 创建

count = {1,2,3,4,5}

print(type(count),count)

s1 = set(“hello”)

print(s1)

s2 = set([1,3,5,7])

print(s2)

value = list(s2)

print(value)

”’

{1, 2, 3, 4, 5}

{‘e’, ‘o’, ‘l’, ‘h’}

{1, 3, 5, 7}

[1, 3, 5, 7]

”’

5.2.2 基本操作

set.add() 向集合中添加一个元素

set.remove(x) 从集合当中移除指定元素x

len/sum/max/min 用法相同

set.pop() 从集合中随机数弹出并返回一个元素

5.2.3 子集与超集

s2.issubset(s1) 判断s2是否是S1的子集

s1.issuperset(s2) 判断s1是否是S2的超集

s1 & s2 交集

s1 | s2 并集

s1 – s2 差集

s1 ^ s2 补集

5.3 bytes/to_bytes()/from_bytes()

x = 65534

bufferLittle = x.to_bytes(2,’little’)

print(“little endian:”,bufferLittle)

bufferBig = x.to_bytes(2,’big’)

print(“big endian:”,bufferBig)

y = int.from_bytes(b’\xfe\xff’,’little’)

print(y)

”’

little endian: b’\xfe\xff’

big endian: b’\xff\xfe’

65534

”’

#to_bytes(n,’little’/’big’) 将整数转换成指定字节长度(这里为2),‘little’与‘big’为编码顺序,一般都是‘little’

#from_bytes() 将bytes 重新打包成int

5.4 bytearray字节数组

与bytes相比,可修改

buffer = bytearray(0x00 for x in range(10))

print(type(buffer),buffer)

buffer = bytearray(b’abcdefghijklmn’)

buffer[1] = ord(‘B’)

print(buffer)

print(buffer[3:11:3])

”’

bytearray(b’\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00′)

bytearray(b’aBcdefghijklmn’)

bytearray(b’dgj’)

”’

5.5 按位与、或、移位

& 按位与

| 按位或

<< 左移位

‘>>’ 右移位

微实践-lucky number

sName = input(‘Please enter your name:’).strip().lower()

sName = sName.split()

x = ord(‘a’)

luckynumber = 0

for i in sName:

for j in i:

v = ord(j) – x + 1

luckynumber += v

print(‘value of’,j,’=’,v)

print(“Your lucky number is:”,luckynumber)

5.6 名字绑定/copy/deepcopy

= 赋值,会将名字绑定到一个地址,传地址而非传值,包括int类型也是传递至

== 比较两个变量的值

is 比较两个变量的地址 因此需要用==比较值

a = 3

b = a

print(‘id(a)’,id(a),’id(b)’,id(b),end = ”)

b = a.copy() 只复制列表本身,复制出来的列表与原列表仍可能绑定在一个相同的子列表对象上

b = copy.deepcop(a) 将列表与其嵌套列表完整复制

#copy2.py

a = [1,2,3,[3,2,1]]

b = a.copy()

print(“id(a):”,id(a),’id(b):’,id(b))

print(‘id(a[3]):’,id(a[3]),’id(b[3]):’,id(b[3]))

b[3][2]= 99

print(a,b)

”’

id(a): 2471550621696 id(b): 2471550671744

id(a[3]): 2471520296256 id(b[3]): 2471520296256

[1, 2, 3, [3, 2, 99]] [1, 2, 3, [3, 2, 99]]

”’

#deepcopy2.py

import copy

a = [1,2,3,[3,2,1]]

b = copy.deepcopy(a)

print(“id(a):”,id(a),’id(b):’,id(b))

print(‘id(a[3]):’,id(a[3]),’id(b[3]):’,id(b[3]))

b[3][2]= 99

print(a,b)

”’

id(a): 2037795479424 id(b): 2037795559424

id(a[3]): 2037795485632 id(b[3]): 2037795558720

[1, 2, 3, [3, 2, 1]] [1, 2, 3, [3, 2, 99]]

”’

Chapter6 条件、循环

6.1 赋值/序列解包/*吸收多余值

x,y,z = ‘x’,’y’,’z’

print(x,y,z)

#x y z

numbers = 1,2,3 #numbers = (1,2,3)

a,b,c = numbers #a=1,b=2,c=3

d,e,f = [4,5,6] #d=4,e=5,f=6

g,h,i = ‘789’ #g=7,h=8,i=9

解包时,可以用*吸收多余的值

x,y,*rest = [1,2,3,4,5]

print(x,y,rest)

#1 2 [3, 4, 5]

x,*middle,y = [1,2,3,4,5]

微实践-滚雪球的复利

from matplotlib import pyplot as plt

fBalance = 10000

fRate = 0.0005

balances = []

for i in range(365*30):

fBalance = fBalance + fBalance*fRate

balances.append(fBalance)

print(’30年后连本带利欠款总额:%.2f’%fBalance)

plt.plot(list(range(365*30)),balances)

plt.title(“Loan balance grow by days”)

plt.show()

0d96134d38441a21d9d68eeb6a1234f1.png

微实践-程序断点调试

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。



版权声明:本文为weixin_29418485原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。