头歌-Python函数综合实训指南
第1关:第一个函数
# coding:utf-8
deg = float(input())
def F(C):
#请在此添加代码,将摄氏度deg转换为华氏度
#********** Begin *********#
f=int(C)*(9.0/5)+32#*9.0才可以*#
return f
#********** End *********#
print ("%.2f" %(F(deg)))
第2关:在函数中修改全局变量
# coding:utf-8
counter = 0
def access():
#请在此添加代码,实现counter的调用,每次调用counter的值加1
#********** Begin *********#
global counter
counter+=1
return counter
#********** End **********#
for i in range(5):
access()
print (counter)
第3关:练习使用参数
# coding:utf-8
from math import sqrt
a = float(input()); b = float(input()); c = float(input())
def roots(a,b,c):
#请在此添加代码,求方程 ax^2+bx+c = 0的解,返回由方程根构成的列表,若方程有无数解,返回['inf']
#********** Begin *********#
if (b**2-4*a*c)<0:
return ['inf']
else:
x1=((-b)+sqrt(b**2-4*a*c))/(2*a)
x2=((-b)-sqrt(b**2-4*a*c))/(2*a)
if x1==x2:
return [x1]
else:
return [x2]
#********** End **********#
print (roots(a,b,c))
第4关:具有多个返回值的函数
# coding:utf-8
from math import sqrt
a=float(input()); b=float(input()); c=float(input())
def roots(a, b, c):
#请在此添加代码,在a不等于0的情况下编写函数求解方程的两个根并将根返回
#********** Begin *********#
if (b**2-4*a*c)<0:
return ['inf']
else:
x1=((-b)+sqrt(b**2-4*a*c))/(2*a)
x2=((-b)-sqrt(b**2-4*a*c))/(2*a)
return (x1,x2)
#********** End **********#
if a != 0:
print (roots(a,b,c))
第5关:Lambda 表达式
# coding:utf-8
from math import sin, cos
delX = 0.001
x = float(input())
b=x
def diff(f):
#请在此添加代码,求出函数f的导数
#********** Begin *********#
global b#
global delX
a=lambda b,delX:((sin(b+delX)- sin(b-delX)))*1.000/(2.0*delX)
return a(b,delX)
#********** End *********#
print("%.2f"%(diff(sin(x))))
第6关:使用关键字参数
# coding:utf-8
from math import *
delX=0.01
x = float(input())
b=x
#请在此添加代码,自行定义diff函数并实现此函数
#********** Begin *********#
def diff(f):
global b#
global delX
a=lambda b,delX:((sin(b+delX)- sin(b-delX)))*1.000/(2.0*delX)
return a(b,delX)
#********** End **********#
print("%.6f"%(diff(sin(x))))
第7关:使用可变长参数
第8关:使用递归
# coding:utf-8
Lst = input()
Lst = Lst.split(',')
def abs_sum(L):
#请在此添加代码,以递归的方式设计函数abs_sum(L)返回列表L(假设其中全是整数)中所有整数绝对值之和
#********** Begin *********#
sum=0
for i in L:
i=int(i)
if i>=0:
sum=sum+i
continue
else:
sum=sum+(-1)*i
return sum
#********** End *********#
print(abs_sum(Lst))
第9关:生成器与 yield
# coding:utf-8
from math import sqrt
def Vieta(i):
#请在此输入代码
#********** Begin *********#
if i==0:
return sqrt(2)/2
else:
return sqrt(2+2*Vieta(i-1))/2
#********** End *********#
N = int(input())
v = Vieta(0); p = 1.0
for i in range(N+1):
#请在此输入代码
#********** Begin *********#
p=p*Vieta(i)
#********** End *********#
print ("%.6f"%(2.0/p))
作者:欲望垃圾桶