程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 實驗三 函數

編輯:Python

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

結果

題目二

驗證哥德巴赫猜想:任意一個大於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)

結果

題目三

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

結果


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved