教学案例十一 函数
第1关:定义逆序的函数
编写一个返回逆序数的函数。 主程序输入一个数n,然后调用该函数得到其逆序数。
def nxs(a):
#代码开始
return eval("".join(reversed(str(a))))
#代码结束
n=eval(input("请输入一个数"))
print("逆序数是{}".format(nxs(n)))
第2关:1000之内的回文数
编写一个输出1000之内的回文数的程序 每行显示10个数,每个数显示宽度为5 注意:nx函数已经定义在本文件夹的程序nxhs.py中。
调用函数
程序调用一个函数需要执行以下四个步骤: (1)调用程序在调用处暂停执行; (2)在调用时将实参复制给函数的形参; (3)执行函数体语句; (4)函数调用结束给出返回值,程序回到调用前的暂停处继续执行 函数名可以作为表达式的一部分,可以直接输出,可以出现在赋值语句,也可以作为其他函数的参数
from nxhs import *
#代码开始
n = 0
for i in range(1,1001):
if i == nx(i):
print("{:5d}".format(i),end="")
n += 1
if n % 10 == 0:
print()
#代码结束
第3关:验证回文数猜想
验证回文数猜想。 回文数猜想是任取一个数,再把这个数倒过来,并将这两个数相加;然后这个和数再倒过来,与原来的和数相加。重复这个过程,一定能获得一个回文数 注意:调用nx函数(在nxhs.py文件中)得到逆序数
from nxhs import *
a=eval(input("输入一个数"))
#代码开始
while True:
b = nx(a)
if a == b:
break
print("{}={}+{}".format(a+b,a,b))
a += b
#代码结束
第4关:绘制田字格
定义一个函数ht,可以根据给定的字符和个数,画出田字格。若没有指定字符,则画出5个*
号的田字格
def ht(ch="*",n=5):
#代码开始
n = int(n)
line1 = (ch+" ") * (n*2+2)
line2 = ch + " "*(2*n)+ch+" "*(2*n)+ch
print(line1)
for i in range(n):
print(line2)
print(line1)
for i in range(n):
print(line2)
print(line1)
#代码结束
zf=input("字符")
cs=input("个数")
ht(zf,cs)
第5关:数值统计函数的定义
分别定义求平均值pjz、中位数zws和均方差jfc函数。可以返回多个整数的平均值、中位数和均方差,要求返回值均保留两位小数
def pjz(*x):
#代码开始
return round(sum(x)/len(x),2)
#代码结束
def zws(*x):
#代码开始
x = list(x)
x.sort()
if len(x)%2==0:
y = len(x)//2
return round((x[y-1]+x[y])/2,1)
else:
return x[len(x)//2]
#代码结束
def jfc(*x):
#代码开始
avg = pjz(*x)
s = 0
for i in list(x):
s += pow(i-avg,2)
return round(pow(s/len(x),0.5),2)
#代码结束
x=eval(input())
y=eval(input())
z=eval(input())
print(pjz(x,y,z),zws(x,y,z),jfc(x,y,z))
m=eval(input())
print(pjz(x,y,z,m),zws(x,y,z,m),jfc(x,y,z,m))
第6关:数值统计函数2
定义一个统计函数tj,可以返回多个整数的平均值、中位数和均方差,要求返回值均保留两位小数
def tjhs(*x):
#d代码开始
x = list(x)
x.sort()
pjz=round(sum(x)/len(x),2)
idx = len(x)//2
if len(x)%2==0:
zws=round((x[idx-1]+x[idx])/2,1)
else:
zws=x[idx]
l=[pow(num-pjz,2) for num in x]
jfc=round(pow(sum(l)/len(x),0.5),2)
return pjz,zws,jfc
#代码结束
x=eval(input())
y=eval(input())
z=eval(input())
a,b,c=tjhs(x,y,z)
print(a,b,c)
m=eval(input())
a,b,c=tjhs(x,y,z,m)
print(a,b,c)