Python 实验三 函数

182 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

🌴 2022.5.25 下午 实验

实验三 函数

前言

🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
📽实验源码已在Github整理

题目一

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

问题分析

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

内置函数:

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

结果

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: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)

结果

Python实验08

题目三

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

结果

Python实验09