🌴 2022.5.25 下午 实验

实验三 函数

题目一

编写一个函数func(str),计算并返回字符串str中的数字、字母及其他类型字符的个数

问题分析

在func函数中利用元组定义数字、字母、空格、其它,并初始化为0。之后利用for循环对字符遍历,依次if判断是哪种字符类型

内置函数:

  1. isdigit ()判断数字
  2. isalpha ()判断字母
  3. 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 ) )

结果

Python实验07

题目二

验证哥德巴赫猜想:任意一个大于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): #j<i防止重复
if(j+i==num):
elem = str(num)+'='+str(i)+'+'+str(j)
result.append(elem)
isGDBH(num)
print(result)

结果

Python实验08

题目三

  1. 编写3个函数,分别求三角形、矩形和圆形周长
  2. 使用装饰器对上述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=='三角形'):
# 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))

结果

Python实验09