杭师管科python专业课线上笔记(一):python易错基础知识笔记(141分)

先说下成绩,在对的改错一道5分填空题的情况下141分。应该是代码题被老师挑刺挑出了4分
在这里插入图片描述

没有买教材,因为看过真题后发现总共快30章的书实际上只考其中6章(1-5,11),买的话有点亏,就从网上整了个电子版,如有需要的可以评论个邮箱,没必要细看,只需要过一遍就好了
注:为更好贴合教材,标题以书中为准;为更好理解,标题较原书中会有改动(书翻译得是真不咋样…

软件的话去下一个Anaconda,用里面的spyder就好了

0 2022考纲要求

1 基础知识

1.3 数和表达式

除法和整除的区别

  • 除法的运算结果是浮点数(即小数)
>>> 1/2
0.5
>>> 1/1
1.0
>>> 
  • 整除可以丢弃小数部分,用双斜杠 (但其实原理是得到不大于结果的最大整数)
>>> 1//2
0
>>> 1//1
1
>>> 5.0//2.4
2.0

求模运算

  • “%”是求模运算,取余数
>>> 10%3
1
#10÷3=3······1

负数整除与负数求模(手算方式总结,大概率不考)

  • 负数整除

>>> 10//-3
-4
>>> -10//3
-4
>>> -10//-3
3

10÷-3=-3.333 --> -4<-3.333
-10÷3=-3.333 --> -4<-3.333
-10÷-3=3.333 --> 3<3.333
原理是得到不大于结果的最大整数

  • 负数求模

>>> 10%-3
-2
>>> -10%3
2
>>> -10%-3
-1

10//-3=-4 --> -4X-3=12 --> 10-12=-2
-10//3=-4 --> -4X3=-12 --> -10-(-12)=2
-10//-3=3 --> 3X-3=-9 --> -10-(-9)=-1

理解并模仿上述流程即可(实在难以拿话总结出来了…

乘方优先级比取负高

  • 即-(3**2)
>>> -3**2
-9

命名规则

  • python变量命名规则:只能由数字、字母、下划线组成,不能以数字带头,不能是保留字(如:def)。

1.7 常见函数

pow()

  • 表示乘方
>>> pow(2,3)
8

round()

  • 用于将浮点数转换为最接近的整数,注round(0.5)=0
>>> round(0.5)
0
>>> round(0.51)
1
>>> round(0.49)
0

sqrt()

  • 表示平方根
>>> from math import sqrt
>>> sqrt(9)
3.0
>>> sqrt(-1)
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    sqrt(-1)
ValueError: math domain error

或import math
使用时用math.sqrt()

2 列表和元组

2.2 序列

切片及步长

  • 切片指定步长可以跳过一些元素
  • 注意,步长为负数时,从右向左提取元素=,因此前者下标对应的元素要在后者下标对应元素的后面
>>> list=[1,2,3,4,5,6,7,8,9,10]
>>> list[-3:-1]
[8, 9]
>>> list[0::2]
[1, 3, 5, 7, 9]
>>> list[::4]
[1, 5, 9]
>>> list[8:3:-2]
[9, 7, 5]
>>> list[9:-3:-1]
[10, 9]

序列加法

  • 加法可以拼接同类型序列
>>> [1,2]+[3]
[1, 2, 3]
>>> 'he'+'llo'
'hello'
>>> [1,2]+'h'
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    [1,2]+'h'
TypeError: can only concatenate list (not "str") to list

序列乘法

  • 序列与x相乘,重复x次创建新序列
>>> [1,2]*8
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
>>> 'haha'*4
'hahahahahahahaha'

判断成员资格

  • ‘in’、‘not in’运算符判断成员资格
>>> 'w'in'w1'
True
>>> 'w'in'q1'
False
>>> '1'in[1,2,3]
False
>>> 1 in [1,2,3]
True
>>> 1 not in [1,2,3]
False

2.3 列表

2.3.1 list和str相互转换

>>> list('hello')
['h', 'e', 'l', 'l', 'o']
>>> ''.join(['w','o','r','l','d'])
'world'

2.3.2 基本列表操作

索引赋值

  • 索引可以给列表直接赋值,从而更改列表某一元素
>>> list=[1,1,1]
>>> list[2]=3
>>> list
[1, 1, 3]

切片赋值

-可以用切片进行多个元素的赋值,且可以替换成长度不同的序列

>>> name=list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:]=list('ar')
>>> name
['P', 'e', 'a', 'r']
>>> name[1:]=list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']
>>> name[2:]=[]
>>> name
['P', 'y']

2.3.3 列表方法

len()

  • len()用于列表长度计算
>>> list=[1,2]
>>> a=len(list)
>>> a
2

append()与extend()的区别

  • append()用于将对象作为单个元素加到列表末尾
>>> list=[1,2]
>>> list.append(3)
>>> list
[1, 2, 3]
>>> list.append([4,5])
>>> list
[1, 2, 3, [4, 5]]
  • extend()用于将一个列表的多个值加到列表末尾
  • extend()效果与列表加法一样
>>> list=[1,2,3]
>>> list.extend([4,5])
>>> list
[1, 2, 3, 4, 5]

clear()

  • 清空列表内容,返回空列表

常规复制与copy()复制的区别

  • 不使用copy(),常规复制只是将名称进行关联,list和list1指向同一个列表
>>> list=[1,2,3]
>>> list1=list
>>> list[1]=4
>>> list1
[1, 4, 3]
  • copy()
    copy()用于创建副本,list1与list的副本关联
>>> list=[1,2,3]
>>> list1=list.copy()
>>> list1[1]=4
>>> list1
[1, 4, 3]
>>> list
[1, 2, 3]

count()

  • 计算指定元素在列表中出现了多少次
>>> [1,2,3,4,'1',1].count(1)
2

index()

  • 查找指定值第一次所出现的索引
>>> [1,2,5,7,5,1].index(5)
2

insert()

  • 将一个元素插入列表中,让该元素成为前面指定的下标
>>> list=[1,2,3,4,5]
>>> list.insert(3,'a')
>>> list
[1, 2, 3, 'a', 4, 5]

pop()

  • 从列表删除一个元素,未指定则删除末尾最后的元素。并返回这一元素
    pop是唯一既修改列表又返回一个非None值的列表方法
>>> list=[1,2,3]
>>> list.pop()
3
>>> x=list.pop(0)
>>> list
[2]
>>> x
1

remove()

  • 删除第一个指定的元素,不是传入索引
>>> list=[9,8,7,6,5,4,3,2,1]
>>> list.remove(1)
>>> list
[9, 8, 7, 6, 5, 4, 3, 2]
>>> list.remove(9)
>>> list
[8, 7, 6, 5, 4, 3, 2]

reverse()

  • 不进行排序,反向排列列表元素。
>>> list=[1,2,3]
>>> list.reverse()
>>> list
[3, 2, 1]

sort()

  • 对列表进行排序,默认升序。设置reverse=True变成降序。
>>> list=[4,6,2,1,7,9]
>>> list.sort()
>>> list
[1, 2, 4, 6, 7, 9]
>>> list=[4,6,2,1,7,9]
>>> list.sort(reverse=True)
>>> list
[9, 7, 6, 4, 2, 1]

set()

  • 去掉列表中重复的元素,可以通过list(set())将其转化为列表形式
>>> l1=[2,1,4,4,3,2]
>>> set(l1)
{1, 2, 3, 4}
>>> list(set(l1))
[1, 2, 3, 4]

enumerate()

  • 主要用于需要同时取出下标和值的列表
>>> l1=[2,1,4,4,3,2]
>>> for index,value in enumerate(l1):
	print(f'下标为{index},值为{value}')

	
下标为0,值为2
下标为1,值为1
下标为2,值为4
下标为3,值为4
下标为4,值为3
下标为5,值为2

2.4 元祖(基本不考)

创建元组

>>> 1,2,3
(1, 2, 3)
>>> ()
()
>>> 42,
(42,)
>>> 3*(40+2,)
(42, 42, 42)

tuple()

  • 可以将一个序列转换为元祖
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')

访问元素

  • 索引和切片同样可以应用在元组。
>>> x=1,2,3
>>> x[1]
2
>>> x[0:]
(1, 2, 3)

3 字符串

3.2 字符串格式

format()

-用于将括号内的值替换成花括号的值

>>> "{},{} and {}".format('one','two','three')
'one,two and three'
>>> "{2},{1} and {0}".format('one','two','three')
'three,two and one'

3.3 字符串格式(完整版)

字段名替换

>>> "{a} is {b:.2f}".format(a='pi',b=3.141415926)
'pi is 3.14'
>>> '{foo}{1}{bar}{0}'.format(1,2,bar=4,foo=3)
'3241'

宽度和精度
{x:m.nf},表示对浮点数x保留n位小数,m宽度

>>> "{pi:10.2f}".format(pi=3.1415926)
'      3.14'

3.4 字符串方法

center()

  • 用于在两边填充字符(默认空格),让字符串居中
>>> 'Middle'.center(12,'#')
'###Middle###'

find()

  • 查找子串,返回子串的第一个字符的索引,没有查到则返回-1
>>> '123456789'.find('678')
5
>>> '123456789'.find('679')
-1

join()

  • 用于合并序列中的元素,str.join(list),
>>> seq=['1','2','3']
>>> seq.join('+')
Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    seq.join('+')
AttributeError: 'list' object has no attribute 'join'
>>> '+'.join(seq)
'1+2+3'
>>> a='usr','bin','env'
>>> a
('usr', 'bin', 'env')
>>> '/'.join(a)
'usr/bin/env'

lower()

  • 返回字符串的小写版本

upper()

  • 返回字符串的大写版本

title()

  • 文章的所有单词首字母都大写

replace()

  • 将子串替换为另一个字符串
>>> 'heda heheda'.replace('hehe','haha')
'heda hahada'

split()

  • 拆分,与join()相反,没有指定分隔符时默认空格,注意拆分出来的是列表形式
>>> '1+2+3+4'.split('+')
['1', '2', '3', '4']
>>> '1 2 45'.split()
['1', '2', '45']

strip()

  • 删除字符串开头和结尾的空白或指定字符
>>> '   23 32 '.strip()
'23 32'
>>> '##!23#33##'.strip('#')
'!23#33'

isalnum()

  • 判断是否为全是字母或数字

isalpha()

  • 判断是否为全是字母

isdight()

  • 判断是否为全是数字

islower()

  • 判断是否都是小写字母

isspace()

  • 判断是否都是空白字符

4 字典

4.2创建和使用字典

4.2.1 dict()函数创建

元组列表创建

  • 通过若干个元组组成的列表进行创建,通过对于key的索引进行访问
>>> list=[('nname','john'),('age',18)]
>>> d=dict(list)
>>> d
{'nname': 'john', 'age': 18}
>>> d['age']
18`

关键字实参创建

>>> d=dict(name='john',age=22)
>>> d
{'name': 'john', 'age': 22}

4.2.2 基本字典操作

len()

  • 用于返回键值对的数量

dict[k]

  • 返回键k对应的值

dict[k]=v

  • 将值v关联到键k

del dict[k]

  • 删除键k的键值对

k in dict

  • 检查dict中是否包含键为k的项

直接创建键值对

>>> dict={}
>>> dict['age']=18
>>> dict
{'age': 18}

4.2.4 字典方法

clear()

  • 删除所有的字典项

copy()

  • copy()修改一方的值,另一方不会变化,相互独立
>>> dict={'name': 'john', 'age': 22}
>>> dict1=dict.copy()
>>> dict['age']=1
>>> dict1
{'name': 'john', 'age': 22}
>>> dict1['age']=2
>>> dict
{'name': 'john', 'age': 1}

fromkeys()

  • 创建新字典,包含指定键,如不传入统一值则为None
>>> dict={}
>>> dict.fromkeys(['name','age'])
{'name': None, 'age': None}
>>> dict.fromkeys(['name','age'],'unknow')
{'name': 'unknow', 'age': 'unknow'}
>>> dict.fromkeys(['name','age'],('john',22))
{'name': ('john', 22), 'age': ('john', 22)}

get()

  • 访问字典项,传入键得到值,如访问不到则返回None
>>> dict={}
>>> print(dict.get('job'))
None
>>> dict['age']=2
>>> dict
{'age': 2}
>>> dict.get('age')
2

items()、keys()、values()

  • 返回包含所有字典项的列表,每个元素(key,value)形式
  • keys()返回所有键,values()返回所有值
>>> dict.items()
dict_items([('name', 'unknow'), ('age', 'unknow')])
>>> dict.keys()
dict_keys(['name', 'age'])
>>> dict.values()
dict_values(['unknow', 'unknow'])
  • 可以用list()转换为列表进行列表操作
>>> list(dict.values())
['unknow', 'unknow']
>>> list(dict.keys())
['name', 'age']
>>> list(dict.items())
[('name', 'unknow'), ('age', 'unknow')]

pop()

  • 获取指定键的值,并将该键值对删除
>>> dict={'name': 'john', 'age': 18}
>>> x=dict.pop('age')
>>> dict
{'name': 'john'}
>>> x
18

update()

  • 使用一个字典的项更新另一个字典
>>> dict={'name': 'john', 'age': 18}
>>> x={'age':28}
>>> dict.update(x)
>>> dict
{'name': 'john', 'age': 28}

5 条件、循环及其他语句

5.1 print()

通过sep设置字符的间隔

>>> x='1'
>>> y='2'
>>> z='3'
>>> print(x,y,z)
1 2 3
>>> print(x,y,z,sep='')
123
>>> print(x,y,z,sep='+')
1+2+3

通过end对末尾进行设置,默认换行

print('hello',end='') 

5.2 赋值方式

同时赋值

>>> x,y,z=1,2,3
>>> print(x,y,z)
1 2 3

交换变量值

>>> x,y=1,2
>>> x,y=y,x
>>> print(x,y)
2 1

增强赋值

>>> x=2
>>> x+=1
>>> x
3
>>> x*=4
>>> x
12

5.4 条件语句

记得条件语句的最后要加冒号“:”
and和or表示且和或, 不要用C语言的&和||
elif,不要用C语言的else if

5.5 循环语句

5.5.1 while循环

注意,while循环的最终退出结果不符合while的条件

>>> while a<10:
	a+=3
>>> print(a)
12

5.5.2 for循环

range相关

  • range(x)表示区间[0,x),左闭右开
  • range(x,y)表示区间[x,y),左闭右开
  • range(x,y,z)表示步长为z,不管z的正负,仍是左闭右开

5.5.3 字典遍历

>>> dict={'x':1,'y':2,'z':3}
>>> for key in dict:
	print(key,dict[key])
x 1
y 2
z 3
>>> for key,value in dict.items():
	print(key,value)
x 1
y 2
z 3

5.5.4 迭代工具

zip()序列缝合

  • 用于将多个序列缝合起来
>>> name=['x','y','z']
>>> age=[1,2,3]
>>> for i,j in zip(name,age):
        print('name:',i,',','age:',j,'.')
name: x , age: 1 .
name: y , age: 2 .
name: z , age: 3 .

enumerate()获取索引

>>> string='abcdefg'
>>> for index,char in enumerate(string):
	print('index:',index,',','char:',char,'.')
index: 0 , char: a .
index: 1 , char: b .
index: 2 , char: c .
index: 3 , char: d .
index: 4 , char: e .
index: 5 , char: f .
index: 6 , char: g .

reversed()反向迭代

>>> ''.join(reversed('hello,world'))
'dlrow,olleh'

5.5.5 跳出循环

break跳出整个循环;continue跳出本次循环,进行下一次,不结束循环

5.5.6 for-else循环

用于判断循环是break提前结束还是循环完正常结束
在这里插入图片描述
输出结果为Didn’t find it!

5.5.5 列表推导式

用于快速创建列表

>>> [x*x for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [x*x for x in range(10) if x % 3==0]
[0, 9, 36, 81]
>>> [(x,y) for x,y in enumerate('abcdefg')]
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]

11 基于python的txt文件操作(教材11章,P213)

11.1 打开文件模式

  • ‘r’、‘rt’:读取模式(默认值)
  • ‘w’:写入模式,文件不存在会直接创建,删除原有内容
  • ‘a’:附加模式,不删除原有内容,在其后继续写入
  • ‘+’:和其他模式结合使用,读取+写入
    ‘r+’:读取+写入,不删除原有内容,‘w+’:读取+写入,删除原有内容
  • ‘t’:和其他模式结合使用,Unicode文本,UTF-8模式(默认)
  • ‘b’:和其他模式结合使用,二进制模式

11.2 文件的基本方法

  • open()
    打开文件,传入文件模式,默认‘rt’
  • write()
    将提供的字符串写入既有文件的后面。
    注:不要与’w’模式搞混
  • read()
    read()将文本全部输出,若内有数字,则输出前X个字符,\n也算。多多次重复read(),则已读取的字符不算在内
f=open('something.txt','w') #创建something.txt文件,写入模式
f.write('Hello,') #写入Hello,
f.write('world!') #在末尾写入world!
结果:
同目录下产生something.txt文件,内容为:Hello,world!
-------------------------------------------------------------
f=open('something.txt','r') #读模式打开
print(f.read(5)) #读取前5个字符
print(f.read()) #读取余下的字符
结果:
Hello
,world!
-------------------------------------------------------------
f=open('something.txt','w') #写入模式打开something.txt文件,删除原有内容
f.write('123') # 写入123
f.close()
结果:
原内容消失,文件内容为:123

  • with open(filepath) as f:语句
    打开文件,赋给f变量
  • readline() 读取一行,readlines()将各行以列表形式读取

(文本内容)
Welcome to this file
There is nothing here except
This stupid haiku

with open('something.txt') as f:
    for i in range(3):
        print(str(i)+':'+f.readline(),end='')#文件内自带了换行,所以此处不换行,否则会空出一个空白行
结果:
0:Welcome to this file
1:There is nothing here except
2:This stupid haiku
with open('something.txt') as f:
    print(f.readlines()) #将文本各行以列表形式读取
结果:
['Welcome to this file\n', 'There is nothing here except\n', 'This stupid haiku']

  • writelines(list)
    传入字符串元素的列表,依次写入文件

(文本内容)
Welcome to this file
There is nothing here except
This stupid haiku

with open('something.txt') as f:
    lines=f.readlines()#将文本各行以列表形式读取
    lines[0]='hello\n'
    lines[1]='world\n'

with open('something.txt','w') as f:
    f.writelines(lines)
结果:
hello
world
This stupid haiku

11.3 迭代文件内容

(本节文本内容)
hello
world

11.3.1 每次一个字符

with open('something.txt') as f:
    while True:
        char=f.read(1)
        if not char : break
        print('Processing:', char)
结果:
Processing: h
Processing: e
Processing: l
Processing: l
Processing: o
Processing: 

Processing: w
Processing: o
Processing: r
Processing: l
Processing: d
Processing: 

11.3.2 每次一行

with open('something.txt') as f:
    while True:
        line=f.readline()#读取一行
        if not line : break
        print('Processing:', line,,end='')#文件内自带了换行,所以此处不换行,否则会空出一个空白行
结果:
Processing: hello
Processing: world

11.3.3 读取所有内容

使用read()以字符串形式读取
readlines()以列表形式读取

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryo_Yuki

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值