🌴 2022.5.25 下午 实验
实验三 函数
题目一
编写一个函数func(str),计算并返回字符串str中的数字、字母及其他类型字符的个数
问题分析
在func函数中利用元组定义数字、字母、空格、其它,并初始化为0。之后利用for循环对字符遍历,依次if判断是哪种字符类型
内置函数:
isdigit ()判断数字isalpha ()判断字母isspace ()判断空格
代码
""" @Author:张时贰 @Date:2022年05月28日 @CSDN:张时贰 @Blog:zhsher.cn """ content = input ( '输入字符串' ) def func(s): num = 0 alpha = 0 space = 0 others = 0 dic = { 'num': 0, 'alpha': 0, 'space': 0, 'other': 0 } for i in s: if i.isdigit (): dic[ 'num' ] += 1 elif i.isalpha (): dic[ 'alpha' ] += 1 elif i.isspace (): dic[ 'space' ] += 1 else: dic[ 'other' ] += 1 return dic print ( func ( content ) )
|
结果

题目二
验证哥德巴赫猜想:任意一个大于2的偶数都可以表示成2个素数之和。编写一个函数isGDBH(n)将传入的6~100之间的偶数表示为2个素数之和,结果保存在列表中返回。例如,函数传入参数10,则返回[“10=3+7”, “10=5+5”]
问题分析
输入一个数,验证输入的数是否在6~100之间,调用isGDBH(n)函数验证数据并将结果保存到列表,其中利用isPrime(n)先判断一下是否为素数
代码
""" @Author:张时贰 @Date:2022年05月28日 @CSDN:张时贰 @Blog:zhsher.cn """
def isPrime(n): i=2 while i<=n: if n%i==0: break i+=1 if n==i: return True num=int(input("输入偶数,6~100之间\n")) if num<6: print("请输入大于6的偶数!") exit(0) elif num>100: print("请输入小于100的偶数!") exit(0) elif (num%2)>0: print("请输入偶数!") exit(0) i=1 result = [] def isGDBH(n): global i while(i<=num): i = i + 1 if(isPrime(i)): j=1 while(j<num): j = j + 1 if(isPrime(j) and i<=j): if(j+i==num): elem = str(num)+'='+str(i)+'+'+str(j) result.append(elem) isGDBH(num) print(result)
|
结果

题目三
- 编写3个函数,分别求三角形、矩形和圆形周长
- 使用装饰器对上述3个函数的传入参数进行调用和合法性检查
问题分析
设计三个函数去接收输入的三种值,通过带参的装饰器去分别调用各自的判断条件,通过判断return。装饰器结构挺凌乱的,各位友友可以去具体查查,分无参和有参,我这里用的是带参的装饰器,带参需要用内部装饰器和内函数套用
代码
""" @Author:张时贰 @Date:2022年05月28日 @CSDN:张时贰 @Blog:zhsher.cn """ import math
def DECO(Shape): def deco(func): def call_func(a,b=0,c=0): if(Shape=='三角形'): if ((a + b > c) & (a + c > b) & (b + c > a)): return func ( a, b, c ) else: return '输入无效' if(Shape=='矩形'): if((a>0)&(b>0)): return func(a,b) else: return '输入无效' if(Shape=='圆形'): if(a>0): return func(a) else: return '输入无效' return call_func return deco
@DECO('三角形') def Triangle(a,b,c): return a+b+c
@DECO('矩形') def Cube(a,b): return (a+b)*2
@DECO('圆形') def Circle(a): return 2*math.pi*a if __name__ == "__main__": a,b,c=map(int,input('输入三角形三边').split(" ")) print(Triangle(a,b,c)) a,b=map(int,input('输入矩形两边').split(" ")) print(Cube(a,b)) a=int(input('输入圆半径')) print(Circle(a))
|
结果
