函数及代码复用
(一)定义及使用函数
1. 用函数实现将1-12之间的整数,对应为季节,并在程序中调用该函数
def mapping(n):
if not isinstance(n, int):
res = '输入的不是整数'
else:
if n in [3, 4, 5]:
res = 'Spring'
elif n in [6, 7, 8]:
res = 'Summer'
elif n in [9, 10, 11]:
res = 'Autumn'
elif n in [12, 1, 2]:
res = 'Winter'
else:
res = 'Error'
return res
for i in range(1, 13):
print(i, ":", mapping(i))
1 : Winter
2 : Winter
3 : Spring
4 : Spring
5 : Spring
6 : Summer
7 : Summer
8 : Summer
9 : Autumn
10 : Autumn
11 : Autumn
12 : Winter
2. 用函数实现根据身高、体重确定BMI值及身体状况,并在程序中调用该函数
def bmi(kg, m):
bmi = kg / m ** 2
res = ''
if bmi < 18.5:
res = '偏瘦'
elif bmi >= 18.5 and bmi < 24:
res = '正常'
elif bmi >= 24 and bmi < 28:
res = '偏胖'
elif bmi >= 28 and bmi < 30:
res = '肥胖'
elif bmi >= 30 and bmi < 40:
res = '重度肥胖'
else:
res = '极重度肥胖'
return res
print(bmi(60, 1.7))
正常
3. 用函数实现输出n行直角三角形,并在程序中调用该函数
def print_(n):
for _ in range(1, n + 1):
print("*" * _, end='\n')
print_(9)
*
**
***
****
*****
******
*******
********
*********
4. 用函数实现判断是否为素数,调用该函数输出1-100之间的所有素数
#方法一:
import math
def isPrime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
for i in range(1, 101):
if(isPrime(i)):
print(i, end=" ")
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
5. 编写函数判断一个三位数是否为水仙花数。调用该函数输出所有的三位水仙花数。(如:153 = 1^3+5^3+3^3)
def isDaff(n):
sum = 0
for i in list(str(n)):
sum += int(i)**3
return sum == n
for i in range(100, 1000):
if isDaff(i):
print(i, end=" ")
153 370 371 407
6. 编写函数,求一个整数的阶乘,调用该函数输出1!+2!+…+n!=?
def fac(n):
if n == 1:
return 1
return n * fac(n - 1)
sum = 0
for i in range(1, eval(input()) + 1):
sum += fac(i)
print(sum)
4
33
(二)lambda函数
Lambda函数是一种匿名函数,将函数名作为函数结果返回,用于定义简单的、能在一行内表达的函数。
格式为:<函数名> = lambda<参数列表>:<表达式>
等价于:
def <函数名> (<参数列表>):
return <表达式>
例如,下面的代码输出结果是什么?
1. f = lambda x,y : x+y
print(f(10,12))
22
2. p=lambda x:x*x
print(p(3))
9
3. a=lambda x,y,z :(x+8)*y-z
print(a(5,6,8))
70
4. s = lambda x:"yes" if x==1 else "no"
print(s(0))
no
相关拓展
1)自己编写能实现某个功能的函数
def print_():
for i in range(1, 10):
for j in range(1, i + 1):
print("{}*{}={}\t".format(j, i, i * j), end='')
print()
print_()
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
2)自己编写能实现某个简单功能的lambda函数
lst = [1, -2, 3, -4, 5]
f = lambda x: True if x < 0 else False
for i in lst:
if f(i):
print(i, end=" ")
-2 -4