Python 实验三 函数
🌴 2022.5.25 下午 实验
实验三 函数
文章目录
- 前言
- 题目一
- 题目二
- 题目三
前言
🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
📽实验源码已在Github整理
题目一
编写一个函数func(str),计算并返回字符串str中的数字、字母及其他类型字符的个数
问题分析
在func函数中利用元组定义数字、字母、空格、其它,并初始化为0。之后利用for循环对字符遍历,依次if判断是哪种字符类型
内置函数:
isdigit ()判断数字isalpha ()判断字母isspace ()判断空格
代码
"""
@Author:张时贰
@Date:2022年05月28日
@CSDN:张时贰
@Blog:zhangshier.vip
"""
content = input ( '输入字符串' )
def func(s):num = 0alpha = 0space = 0others = 0dic = {'num': 0,'alpha': 0,'space': 0,'other': 0}for i in s:if i.isdigit ():dic[ 'num' ] += 1elif i.isalpha ():dic[ 'alpha' ] += 1elif i.isspace ():dic[ 'space' ] += 1else:dic[ 'other' ] += 1return 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:zhangshier.vip
"""
#判断是否为素数
def isPrime(n):i=2while i<=n:if n%i==0:breaki+=1if 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 iwhile(i<=num):i = i + 1if(isPrime(i)):j=1while(j<num):j = j + 1if(isPrime(j) and i<=j): #jif(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:zhangshier.vip
"""
import math
#定义带参数的装饰器
def DECO(Shape):#定义内部装饰器def deco(func):#定义内函数def call_func(a,b=0,c=0):if(Shape=='三角形'):# print('测试')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_funcreturn 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))
结果

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
