191205100555 方奕程
#1 Python知识点总结
(1)基础语法
我觉得学习一门新的编程语言最重要的就是先熟悉其语法,以下几个点我认为是比较大的误区:
a.标识符(仅由数字、字母、下划线组成)其中变量名不能以数字开头,再者,定义一个变量名包含两个英文单词时,如your age之间不能有空格,在py里应该定义为your_age(用下划线分开)
b.保留字符 我们可以输入以下代码:
import keyword
回车
keyword.kwlist
输出:[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
在选择变量名时不应该以保留字符命名,但可以包含保留字符
c.缩进,例如条件语句(if、elif、else)、循环语句(while、for等)要注意缩进一致,其中while循环可以大循环嵌套小循环,这就对缩进有着严格的要求。
d.单行注释用# 多行注释用单引号或者双引号把注释内容囊括起来。
#2
(2)基本数据类型:[1]数字、[2]字符串、[3]列表、[4]字典、[5]集合、[元组],其中:
[1]可细致分为int(整形,例如a=6)、float(浮点型,例如a=6.0)、complex(复数,例如3+4j)
[2]字符串用单引号或者双引号括起来,如str=‘Runoob’,str1=‘1234’,此外,字符串还具有索引功能。如对str=‘Runoob’
print(str[0:-2]) #输出str的第一个字符至倒数第三个字符
print(str[2:]) #输出str的从第三个字符起的字符
[3]与字符串相似,也具有索引功能。此外,列表特有的功能,现在列举几个我认为比较重要的功能:
a、del ls[I:j:k] #删除列表ls中第I到第j以k为步长的元素
如a=[1,2,3,4,5,6,7]
del a[0:4:2]
print(a)
输出为[2,4,5,6,7]
b、ls=[]
ls.append(x) #在列表最后增加元素x
ls.insert(I,x) #在第l位置增加元素x
ls.reverse() #将元素反转
[4]d={}
d.get(k,b) #键k存在,返回相应值,不存在返回b值
d.popitem() #随机从字典d中取出一个键值对,以元组形式返回
字典最常见是统计数据出现的次数,数据是键,次数是值
[5]集合时无序的,每个元素唯一,不存在相同元素,下面列举集合操作符:
s|t #返回一个集合,包括s和t所有元素
s&t #返回一个集合,包括同时在s和t中的元素
s^t #返回一个集合,包括s和t中非相同元素
#3
条件语句
例如:if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
使用条件语句的时候,注意语法(每个条件句的后面加上英文的冒号,记得语句与语句之间缩进的一致性,还有条件与条件的逻辑性)
#4
循环语句
a、while循环(给定判断条件为true时执行循环,否则跳出)
以下是简单的while循环:
a=1
while a<10:
print(a)
a+=2
此外,while循环中有continue(跳出本次循环)、break(跳出整个循环)两个循环操作
如对continue:
i = 1
while i < 10:
i += 1
if i%2 > 0: # 非双数时跳过输出
continue
print i # 输出双数2、4、6、8、10
b、for循环
for循环可以遍历一个字符串、列表
如:for x in [1,2,3,4,5]:
print(x)
#输出1
2
3
4
5
此外,for之间还可以嵌套,例如用两个for循环打印乘法表
#5
函数
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
例如:
def a(x):
x[0]=123
return
list1=[1,2,3]
a(list1)
print(list1) #输出为[123,2,3]
此外,python利用lambda来创建匿名函数:其只包含一个语句:
lambda [arg1 [,arg2,…argn]]:expression
例如:
f=lambda x,y:x+y
print(f(5,10)) #输出为15
此外,map()会根据提供的函数指定序列做映射:
def square(x):
return x**2
map(square,[1,2,3,4,5])
#输出[1,4,9,16,25]
此外,filter用于过滤序列,并返回列表
例如:
def a(n):
return n % 2 == 1
newlist = filter(a, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist) #输出[1,3,5,7,9]
#6
异常处理
常见的有以下9种:
#NameError #没有定义tt,执行语句会报错NameError
print(tt)
#IndexError #超出列表界限,报错IndexError
list1=[1,2,3]
print(list1[3])
#SyntaxError #语法错误,即在if语句后面没有加上":",报
#IndentationError #缩进错误,报错IndentationError
if a>3:
print(a)
#ValueError #将非数字的字符转化为int形式,报错 ValueError
print(int(“bb”))
#KeyError
dict1={‘a’:1,‘b’:2,‘c’:3} #字典dict1中找不到键’d’,报错KeyError
print(dict1[‘d’])
#ImportError #导入错误,查无文件fyc.py,报错ImportError
from test.txt import fyc.py
#AttributeError
def init(self,name): #函数传参发生错误,报错AttributeError
selfname(self,name).–init–(name)
#TypeError
list2=[‘123’,‘456’,123] #1为整数,与list2[0]为字符串不是同个数据类型,报错KeyError
print(1 not in list2[0])
#ZeroDivisionError #0作为除数,报错ZeroDivisonError
print(a/0)
#6
其他
a、sep、end参数
sep分隔值与值,默认是空格
end附件到最后一个值,默认是新行
例如:
print(“I’m a tester.”,“hello python”,“good”,sep=’#’,end=’@@\n’)
print(’---------------’)
print(“I’m a tester.”,“hello python\n”,“good”,sep=’#’,end=’@@\n’)
#输出
I’m a tester.#hello python#good@@
I’m a tester.#hello python
#good@@
经典例题
1.给定一个csv表格,计算每种商品的销售额。
我们可以利用创建字典的方法,利用键值的映射来计算。
with open(‘testError.csv’,‘r’,encoding=‘gbk’)as f: #打开文件(阅读模式)
data=f.readlines()
for i in list1:
linelist=i.split(’,’)
name=linelist[4]
list2.append(name)
disSale={}.fromkeys(list2,0)
for i in data1:
linelist=i.split(’,’)
try:
a=(float(linelist[3]))
except ValueError:
print(“销售额为NA或缺失”)
else:
disSale[linelist[4]]+=float(linelist[3]) ##重要
print(disSale)
2、给定以列表形式的销售记录,要求打印出特定销售地点的销售记录:如给定
verse1=[4.5,4.5,“68g好丽友巧克力派2枚”,“D”]
verse2=[3,3,“40g双汇玉米热狗肠”,“A”]
verse3=[5.5,5.5,“430g泰奇八宝粥”,“E”]
verse4=[5,5,“48g好丽友薯愿香烤原味”,“C”] #定义verse1-verse7列表元组,分别含有四个元素
verse5=[3,3,“600ml可口可乐”,“B”]
verse6=[4.5,4.5,“营养快线”,“B”]
verse7=[7,7,“300ml伊利畅意乳酸菌原味”,“C”]
我们可以做以下处理:
verseAll=[verse1,verse2,verse3,verse4,verse5,verse6,verse7]
var=input(“请输入字母:”)
for x in verseAll:
if var x[3]:
print(x)
#这样就能实现输入字母D打印出在D地点的销售记录。
3、计算出数字1~100种能被2整除的所有数的和:
def p3(number):
for i in range(1,101):
if i% number0:
m.append(i)
p3(2)
print(sum(m))
4、根据绩点五级制规划一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,在输出“您输入的键不存在”
def p5(dict1,keys):
a=dict1.get(keys,‘您输入的键不存在’)
return a
e=input(“请输入五级制成绩:”)
f={‘优秀’:4.5,‘良好’:3.5,‘中等’:2.5,‘及格’:1.5,‘不及格’:0}
print(p5(f,e))
5、使用for嵌套循环来打印乘法表
def p1(num):
for i in range (num,0,-1):
for j in range (1,i+1):
print(i,"",j,"=",ij,sep=’’,end=’ ‘)
print()
p1(3)
#输出
31=3 32=6 33=9
21=2 22=4
11=1
6、 在test.txt文件中把每一条销售记录都提取出来,其中,每一条销售记录为一个列表:
with open(‘test.txt’,‘r’)as f:
data=f.readlines()
for i in list1:
linelist=i.split(’,’)
print(linelist)
#输出的linelist即为列表形式的销售记录
7、将诗句将进酒写入空文件中
with open(‘fyc.txt’,‘w’)as d:
str2=‘君不见,黄河之水天上来,奔流到海不复回.\n君不见,高堂明镜悲白发,朝如青丝暮成雪.\n人生得意须尽欢,莫使金樽空对月.\n天生我材必有用,千金散尽还复来\n’
d.write(str2)
d.close()
d=open(‘fyc.txt’,‘r’) #此处使用追加模式,可以覆盖文件里面的内容
c=d.read()
8、给定任意一个字符串,用字典统计每个字符出现的次数
p={}
I=‘黄河之水天上来,奔流到海不复回’
for i in n:
p[i]=n.count(i)
#输出
{‘君’: 1, ‘不’: 1, ‘见’: 1, ‘,’: 1, ‘黄’: 1, ‘河’: 1, ‘之’: 1, ‘水’: 1, ‘天’: 1, ‘上’: 1, ‘来’: 1, ‘,’: 1, ‘奔’: 1, ‘流’: 1, ‘到’: 1, ‘海’: 1, ‘复’: 1, ‘回’: 1, ‘.’: 1}
8、试着将列表的第一项和第三项的元素倒置并形成新的列表
m=[‘ab’,‘cd’,‘ef’,‘gh’,‘ij’,‘kl’]
m.append(i)
reverse1=m[1][::-1]
reverse2=m[3][::-1]
m[1]=reverse1
m[3]=reverse2
9、对比以下两个式子:
a = [8, 2, 6, 2]
a.sort(reverse=True)
print(a)
#输出
[8,6,2,2]
a = [42, 16, 23, 39]
a.reverse()
print(a)
#输出
[16,23,39,42]
10、以下两个式子很好地辨析continue和break的差异
for i in range(1,6):
if i%20:
continue
print(i, end=’,’)。continue:跳出当次循环
#输出:1,3,5
for i in range(1,6):
if i%40:
break break:跳出整个循环
print(i, end=’,’)
#输出:1,2,3
11、编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果
def p6(nums,start1=0,end1=10,start2=10,end2=20):
k=[r.randint(0,100) for z in range(nums)]
print(k)
l=k[start1:end1]
l.sort()
k[start1:end1]=l
l1=k[start2:end2]
l1.sort(reverse=True)
k[start2:end2]=l1
print(k)
p6(20)
12、 rstrip()的运用
rstrip可以定向删除列表中元素的特定字符
如:n=[]
b=[‘nnnn2’,‘gghh4’,‘jgugu2’]
for i in b:
u=i.rstrip(‘2’)
n.append(u)
print(n)
#输出为[‘nnn’,‘gghh4’,‘jgugu’]
13.join()的运用
如a=[‘1’,‘2’,‘3’,‘4’,‘5’]
print(.’.join(a))
#输出1.2.3.4.5
14.以下是range在for循环的运用:
x = ‘runoob’
for i in range(len(x)) :
print(x[i])
#输出r
u
n
o
o
b
15.累加器,累加1到100的值
a=1
b=0
while a<=100:
b+=a
a+=1
break
来源:CSDN
作者:vivaney
链接:https://blog.csdn.net/Kyiredurant/article/details/103689596