这几天玩太High了,根本没有学习(打脸hhh)。今天继续学习Python入门的一些知识吧!
目录
函数
一.函数定义和调用:
定义:如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数
Python中定义函数方法如下:
def 函数名():
语句块
与C语言定义函数需要先定义函数返回类型不同,Python定义函数只需要声明def(我要声明函数啦),函数块内如果添加return也可以返回多个值(不像C只能一个这样子),Python函数中的return可以返回元组,列表、字典,只要承接的变量能够储存多种类型的变量,就可以一次性返回多个数据。
二、函数参数:
“形参”和“实参”的定义与C语言相通:
定义时小括号中的参数,用来接收参数用的,称为 “形参” 调用时小括号中的参数,用来传递给函数用的,称为 “实参”
在实际应用中体现为函数中的参数和主函数中的变量是不能混套的,除非建立全局变量,这些都与C语言相同
三、缺省函数:
缺省函数就是在调用函数时,如果某个参数没有传入值,则调用初始设置的默认值,这样可以降低程序出错的概率
我们用一组实际代码表现这个缺省函数:
# 缺省函数
def PrintNameAndAge(name,age=35):
print('name=%s' % name)
print('age=%d' % age)
PrintNameAndAge(name="Dick",age=9)
PrintNameAndAge(name="Dick") # 在函数执行过程中 age去默认值35
得到的结果如下:
name=Dick
age=9
name=Dick
age=35
注意:带有默认值的参数需要位于参数列表的最后面
四、有返回值的函数:
实际开发中,有时候我们传入一些数据给函数,进行一系列的处理后需要得到一个返回值,此时就需要知道如何返回函数得到的数值
来一组实例简单理解一下:
# 返回函数
def AddNum(a,b):
return a + b
Num = AddNum(10,4)
print(Num)
注意:如果存在多组ruturn,那么函数在运行第一个return时即刻退出函数,后面的return不再执行
五、 引用:
与C语言中指针的调用相似,在Python中,值是靠引用来传递来的
我们可以用id()来判断两个变量是否为同一个值的引用。 我们可以将id值理解为那块内存的地址标示
实例:
a = 1
print(id(a))
b = a
print(id(b))
print('')
a = 2
print(id(a))
print(id(b))
结果:
140373732235568
140373732235568
140373732235600
140373732235568
我们可以发现,b=a这行语句实际上是将1这个值存的地址通过传值传给了b,a发生改变不会引起b值的改变
打个比方,a是某小区1栋1单元101室的住户,a邀请b来他家住几天并把门牌号(地址)告诉了b,b住进了1栋1单元101室,之后a搬走了,房子留给了b,b仍然可以通过地址找到1栋1单元101室,与a没有直接关系
列表
一、列表定义:
Python中的列表没有C那么严谨,定义时没有定义它的类型,可以理解成是混用类型的C语言数组。
列表可以作为一个方括号内的逗号分隔值出现。 数组的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。
注意:初学者比较容易犯错的一点是,无论是C语言还是Python,编程语言中数组或列表一般以0开始计数,比如一个容量为5的列表,它的计数从0开始,位置分别是0,1,2,3,4
实例:
student = ['Chenzirui','Yusizhe','Wujunjie']
print(student)
结果:
['Chenzirui', 'Yusizhe', 'Wujunjie']
二、访问列表元素:
访问列表元素一般直接使用print()函数将某位置的元素直接输出,如下:
student = ['Chenzirui','Yusizhe','Wujunjie']
print(student[0]) # 输出第一个元素
print(student[-1]) # 输出倒数第一个元素
print(student[0:2]) # 输出第一个元素到第三个元素之前的元素
print(student[0:]) # 从第一个开始输出
print(student[:-1]) # 从倒数第一位开始数,输出所有之前的元素输出
结果:
Chenzirui
Wujunjie
['Chenzirui', 'Yusizhe']
['Chenzirui', 'Yusizhe', 'Wujunjie']
['Chenzirui', 'Yusizhe']
为了方便记忆,我们可以将python中的(a,b)或者[a,b]简单理解成高中数学语言中的[a,b),也就是a可以取到,b取不到,这一点和C语言是相通的,比如for(int i=0,i<n;++i),就是遍历0到n-1之间的数
三、更新列表元素:
增加数组中的元素
列表的更新通常通过两种方法,append()与insert(),前者是在列表的后方增加一个元素(类似于C语言中的stack堆),后者实在指定位置插入一个元素
具体的使用如下:
student = ['Chenzirui','Yusizhe','Wujunjie']
print(student)
student.append('dashabi')
print(student)
student.insert(2,'liangzhichao')
print(student)
结果:
['Chenzirui', 'Yusizhe', 'Wujunjie']
['Chenzirui', 'Yusizhe', 'Wujunjie', 'dashabi']
['Chenzirui', 'Yusizhe', 'liangzhichao', 'Wujunjie', 'dashabi']
修改元素的数据可以直接在某位置直接修改即可
删除数组中的元素
1.删除末尾的元素
student = ['Chenzirui','Yusizhe','Wujunjie']
student.pop()
print(student)
结果:
['Chenzirui', 'Yusizhe']
2.删除指定位置元素
student = ['Chenzirui','Yusizhe','Wujunjie']
student.pop(1)
print(student)
结果:
['Chenzirui', 'Wujunjie']
3.del的使用
student = ['Chenzirui','Yusizhe','Wujunjie']
del student[0]
print(student)
结果:
['Yusizhe', 'Wujunjie']
Python列表脚本操作符
列表排序:
cmp -----可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -----主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -----排序规则,reverse = True 降序, reverse = False 升序(默认)
一、普通排序
- 默认升序
num = [213,123,2,1,41,2]
num.sort()
print(num)
结果:
[1, 2, 2, 41, 123, 213]
- 修改reverse是其降序排列
num = [213,123,2,1,41,2]
num.sort(reverse=True)
print(num)
结果:
[213, 123, 41, 2, 2, 1]
二、以指定元素为依据降序排序
# 返回第二个关键字
def ReturnSceond(data):
return data[1]
data = [(7,'Chen'),(10,'Yu'),(5,'Wu'),(9,'Ying')]
data.sort(key=ReturnSceond,reverse=True)
print(data)
结果:
[(10, 'Yu'), (9, 'Ying'), (5, 'Wu'), (7, 'Chen')]
小应用
题目:输入n个实数,先输出他们的降序后的结果,然后计算其平均值
# 求n个实数的平均数
num = []
def avgnum(num,n=1):
sum = 0
for i in range(0,n): # 相当于for(int i=0;i<n;++i)
sum += num[i]
sum /= (n+0.0)
print('{:.0f}个实数的算数平均数为{:.2f}'.format(n,sum))
n = int(input('输入n个需要想加的实数:'))
for i in range(0,n):
temp = eval(input()) #eval()函数将输入转化为Python可以识别的变量类型赋给temp
num.insert(i,temp)
print('')
num.sort(reverse=True) # 降序排序
print ('降序排序得:',num)
avgnum(num,n)
结果:
输入n个需要想加的实数:3
12312.123
22.2
23123
降序排序得: [23123, 12312.123, 22.2]
3个实数的算数平均数为11819.11