本文已参与「新人创作礼」活动,一起开启掘金创作之路。
🌴 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 = 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:zhangshier.vip
"""
#判断是否为素数
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): #j<i防止重复
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: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_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))