python基础学习——第三天
1.函数
1.eval函数:执行一段python的语句
2.函数的定义:
def <functionName> (<parameter>):
return variable
深入理解:为什么python中不需要返回类型?
python是动态语言,变量的类型是可变的,所以返回类型就无意义
3.调用函数: functionName(parameter)
4.python中的函数不仅可以返回一个值,也可以返回多个值
若接收变量只有一个时,接收到的是个tuple
接收变量与返回变量个数相同时,按位置进行对应赋值
5.参数传递的模式
1.值传递(拷贝):函数体中对形参进行操作不影响实参的值,如一个整数(不可变对象)
2.地址的传递(引用):函数体中对形参的操作影响实参的值 ,如一个列表(可变对象)
6.参数传递的方式
1.位置传递(最常用):实参和形参根据位置一一对应
弊端:不知道所传递的实参具体给了哪个形参,不能见名知意
2.名称传递:实参中指定所要赋给的形参的名字,如在实参中test(name=”zoin”,score=99)
3.位置+名称:一般根据位置的在前,名称的再后
7.形参的默认值
若没有传入对应的形参,则取对应形参的默认值
def testName(name="zoin"):
return "hello "+name
def testName(name=”zoin”):
return “hello “+name
如上述中未传入name形参的话,则name形参取默认值”zoin”
8.递归函数
思想是在知道上一个条件后,能否根据上一个条件求出下一个 条件
效率一般较低
递归的终止条件
2.练习
'''
1.要求用户输入一个英文句子,统计该英文句子中含有单词的数目以及词的种数。
提示,英文单词间可以认为都用英文空格进行分割。
'''
sentence=input("输入一段句子:")
words=sentence.split()
dic={}
for i in words:
if i in dic.keys():
dic[i]=dic[i]+1
else:
dic[i]=1
print(dic)
print(len(words))
'''
2.读取0119.txt文件中的内容(每行分别表示一个点的坐标(x,y),找出距离最远以及
距离最近的2个点并分别输出每种情况下这2个点的坐标以及它们的距离
(要求将求距离的写成一个函数,距离采用欧式距离,也就是d=sqrt((x2-x1)^2+(y2-y1)^2))
'''
import math
def dis(a,b):
res=math.sqrt((a[0]-b[0])**2+(a[1]-b[1])**2)
return res
path="D:\\winter_python"
file=path+"\\0119.txt"
input=open(file)
points=[]
for line in input.readlines():
(a,b)=line.split()
point=(float(a),float(b))
points.append(point)
print(points)
min_dis=dis(points[0],points[1])
max_dis=min_dis
for i in points:
partMin=min_dis
partMax=max_dis
for j in points:
if i==j:
continue
res=dis(i,j)
if res<partMin:
partMin=res
minPoint=[i,j]
if res>partMax:
partMax=res
maxPoint=[i,j]
if partMin<min_dis:
min_dis=partMin
if partMax>max_dis:
max_dis=partMax
print(min_dis,minPoint)
print(max_dis,maxPoint)
input.close()
'''
3.从0119.csv文件中读取数据,求各个属性对应的熵,并且按降序进行排序
对于一个属性的熵我们定义为对于该属性中 每种可能的值的出现概率乘以 以2为底该概率
的对数,然后依次求和,最后添负号(sample:chinese属性中A出现3次,B出现3次,C出
现1次,所以对于chinese属性来说: -((3/7)*log2(3/7)+(3/7)*log2(3/7)+(1/7)*log2(1/7)))
'''
import csv
import math
def solve(x):
return x*math.log(x,2)
def getEntropy(list):
sum=len(list)
dic={}
for i in list:
if i in dic.keys():
dic[i]+=1
else:
dic[i]=1
entropy=0
for i in dic:
entropy+=solve(dic[i]/sum)
entropy=-entropy
return entropy
with open('D:\\winter_python\\0119.csv') as f:
f_csv=csv.DictReader(f)
Chinese=[]
Math=[]
English=[]
for row in f_csv:
Chinese.append(row['chinese'])
Math.append(row['math'])
English.append(row['english'])
ChineseEntropy=getEntropy(Chinese)
MathEntropy=getEntropy(Math)
EnglishEntropy=getEntropy(English)
res=[ChineseEntropy,MathEntropy,EnglishEntropy]
res.sort(reverse=True)
print(res)
上一篇: iOS小数点格式化
下一篇: python_3_操作列表