函數的練習題答案--python

1.定義一個函數,傳遞文件路徑,獲取文件的後綴名

def get_houzhui(s):
    print("後綴名是:",s[s.rfind(".")+1:])
s = input("請輸入需要獲取文件後綴的路徑:")
get_houzhui(s)

在這裏插入圖片描述
2:輸入一個數字(年份,如2000年),定義函數,判斷該年份是否是閏年

def get_isrun(num):
    if(num%4==0 and num%100!=0)or num%400 == 0:
        return True
    else:
        return False
        
s = int(input("請輸入需要需要判斷的年份:"))
if get_isrun(s):
    print("{}是閏年".format(s))
else:
    print("{}不是閏年".format(s))

在這裏插入圖片描述
3:將之前的打印*組成三角形的代碼,改造成函數,要求如下(定義好多函數的):
1、打印的層數有調用者決定
2、如果是菱形的話,判斷用戶必須輸入才層數爲奇數纔行

def print_sanjiao(n):
    for i in range(1,n+1):
        for j in range(1,n-i+1):
            print(" ",end="")
        for k in range(1,2*i):
            print("*",end="")
        print()##換行
  

def print_linxing(n):
    for i in range(1,n//2 + 2):
        for j in range(1,n//2 + 2-i):
            print(" ",end = "")
        for k in range(1,2*i):
            print("*",end = "")
        print("")
    for m in range(1,n//2+1):
        for a in range(1,m+1):
            print(" ",end = "")
        for b in range(1,2*(n//2+1-m)):
            print("*",end="")
        print("")
        
        
choice = int(input("請輸入需要打印的選擇:1:三角形,2:菱形"))
if choice == 1:
    n = int(input("請輸入需要打印的行數:"))
    print_sanjiao(n)
elif choice == 2:
    n = int(input("請輸入需要打印的行數:"))
    if n%2 == 0:
        print("行數應爲奇數")
    else:
        print_linxing(n)
else:
    print("錯誤選擇!")

在這裏插入圖片描述
4:定義一個函數,判斷該數是不是質數

def is_zhishu(n):
    flag = True
    for i in range(2,n//2):
        if n%i ==0:
            flag = False
            break
    return flag
                

n = int(input("請輸入需要判斷的數字:"))
if is_zhishu(n):
    print("{}是質數".format(n))
else:
    print("{}不是質數".format(n))

在這裏插入圖片描述
5:做一個計算器函數,輸入三個參數(兩個數字,一個符號)。
如輸入:5 6 + ,則輸出: 5+6=11

def jisuanqi(a,b,op):
    if op == "+":
        return a+b
    elif op == "-":
        return a-b
    elif op == "*":
        return a*b
    elif op == "/":
        return a/b
        
    
num1 = float(input("請輸入需要計算的第一個數字:"))
num2 = float(input("請輸入需要計算的第二個數字:"))
op = input("請輸入需要計算的符號:")
print(jisuanqi(num1,num2,op))

在這裏插入圖片描述
6:定義函數,打印九九乘法表

def print_table(n):
    for i in range(1,n+1):
        for j in range(1,i+1):
            print("{}X{}={}".format(i,j,i*j),end=" ")
        print(" ")    
    
n = int(input("打印的乘法表行數:"))
print_table(n)

在這裏插入圖片描述

7:使用函數完成一個0~n之間的奇數的積。

def print_ji(n):
    sum = 1
    for i in range(1,n+1):
        if i%2 !=0:
            sum *= i 
    return sum
n = int(input("需要打印的乘積:"))
print(print_ji(n))

在這裏插入圖片描述

8:使用遞歸完成1~100之間的積

def print_chengji(n):
    if n == 1:
        return 1
    return n * print_chengji(n-1)


n = int(input("輸入需要計算階乘的值:"))
print("{}的階乘是{}".format(n,print_chengji(n)))

在這裏插入圖片描述
9:找出10000以內能被5或6整除,但不能被兩者同時整除的數(函數)

def print_fuhe(n):
    for i in range(1,n+1):
        if (i%5 ==0 or i%6==0) and not (i%5 ==0 and i%6==0):
            print(i)


n = int(input("輸入需要處理的範圍從0開始:"))
print_fuhe(n)

在這裏插入圖片描述
10:使用函數求三角形的面積和周長(已知三邊的情況下,提示:海倫公式)
import math
math.sqrt(數據) # 表示開平方根
math.sqrt(4) #

import math

def sanjiao_zhouchang(a,b,c):
    return (a+b+c)*2


def sanjiao_mianji(a,b,c):
    p = (sanjiao_zhouchang(a,b,c))/2
    s = math.sqrt(p*(p-a)*(p-b)*(p-c))
    return s
    
a = float(input("輸入三角形三邊邊長之a:"))
b = float(input("輸入三角形三邊邊長之b:"))
c = float(input("輸入三角形三邊邊長之c:"))
print("三角形的周長:{},面積是:{}".format(sanjiao_zhouchang(a,b,c),sanjiao_mianji(a,b,c)))

在這裏插入圖片描述

1、寫一個方法,在方法內依次打印出列表每個元素
的值。

def print_list(ls):
    for i in ls:
        print(ls[i-1])

    
ls = [1,2,3,4,5]
print_list(ls)

在這裏插入圖片描述
2、寫一個方法,計算列表所有元素的和(注意返回值
)。

def print_sum(ls):
    sum = 0
    for i in ls:
        sum += ls[i-1]
    return sum
    
ls = [1,2,3,4,5]
print("列表是:{},元素和是:{}".format(ls,print_sum(ls)))

在這裏插入圖片描述
3、寫一個方法,計算列表所有奇數下標元素的和(注
意返回值)。

def print_sum(ls):
    sum = 0
    i = 1
    while i < len(ls):
        sum += ls[i]
        i += 2
    return sum
    
ls = [1,2,3,4,5]
print("列表是:{},奇數下標元素和是:{}".format(ls,print_sum(ls)))

在這裏插入圖片描述
4、寫一個方法,計算列表所有偶數下標元素的和(注
意返回值)。

def print_sum(ls):
    sum = 0
    i = 0
    while i < len(ls):
        sum += ls[i]
        i += 2
    return sum
    
ls = [1,2,3,4,5]
print("列表是:{},偶數下標元素和是:{}".format(ls,print_sum(ls)))

在這裏插入圖片描述
5、寫一個方法可以計算兩個數的和,想想這個方法
有哪些參數,返回值。

def add(a,b):
    return a+b
    
a = float(input("輸入計算兩個數的和第一位:"))
b = float(input("輸入計算兩個數的和第二位:"))
print("{}+{}={}".format(a,b,add(a,b)))

在這裏插入圖片描述
6、寫一個方法可以計算兩個數的商(分母不能爲0),
想想這個方法有哪些參數,返回值是什麼。

def chu(a,b):
    return a/b
    
a = float(input("輸入計算兩個數中的被除數"))
b = float(input("輸入計算兩個數中的除數"))
if b != 0:
    print("{}/{}={}".format(a,b,chu(a,b)))
else:
    print("除數不能爲0")

在這裏插入圖片描述
7、寫一個方法將傳入的天、小時、分鐘、秒的總和
轉換爲秒,比如0天、2小時、5分、7秒,他們代表的
總秒數爲23600+560+7=7507秒。想想這個方法
有哪些參數,返回值是什麼類型。

def print_miao(day,hour,min,seconds):
    return day*86400+hour*3600+min*60+seconds
    
    
day = float(input("請依次輸入天,"))
hour = float(input("請依次輸入小時,"))
min = float(input("請依次輸入分鐘,"))
seconds = float(input("請依次輸入秒:"))
print("轉換爲秒後:{}".format(print_miao(day,hour,min,seconds)))

在這裏插入圖片描述
8、寫一個方法交換整型列表中兩個指定下標元素的
值。想想這個方法有哪些參數,返回值是什麼類型。

def swap(ls,a,b):
    ls[a] = ls[a]+ls[b]
    ls[b] = ls[a]-ls[b]
    ls[a] = ls[a]-ls[b]
    return ls
        
ls = [1,2,3,4,5]
a = int(input("需要交換的下標a:"))
b = int(input("需要交換的下標b:"))
print("交換前:{}".format(ls))
print("交換後:{}".format(swap(ls,a,b)))

在這裏插入圖片描述
9、寫一個方法計算整型列表中所有能被3整除元素的
個數。想想這個方法有哪些參數,返回值是什麼類
型。

def chu3(ls):
    count = 0
    for i in range(0,len(ls)):
        if ls[i]%3 == 0:
            count += 1
    return count

    
ls = [1,2,3,4,5,6,7,8,9,12]
print("列表:{},能被三整除的元素個數:{}".format(ls,chu3(ls)))

在這裏插入圖片描述
10、寫一個方法將整型數字(int)轉換爲格式化的字符
串(string),現要求如下:
a.可以指定轉換後[字符串的長度];
b.當數字的長度不足指定的長度,讓這個字符串右對
齊,指定[左邊補的字符(char)];
例如,假設現在將指定的數字轉換爲固定長度爲8的
字符串,如果長度不足,左邊補’0’,那麼27這個數字
就會轉換爲字符串"00000027"。
根據要求,想想這個方法有哪些參數,返回值是什麼
類型。

def exchang(num,lens):
    s = str(num)
    return s.rjust(lens,"0")

    
num = int(input("輸入需要轉換的數字:"))
lens = int(input("輸入需要轉換後的長度:"))
print("轉換後:{}".format(exchang(num,lens)))

在這裏插入圖片描述
11.用方法實現找出一個int類型列表中最大值和最小

def exchang(ls):
    max = ls[0]
    min = ls[0]
    for i in range(0,len(ls)):
        if ls[i] > max:
            max = ls[i]
        elif ls[i] < min:
            min = ls[i]
    
    return max,min

    
ls = [1,2,3,4,5,4,3,2,1]
print("最大值和最小值是:{}".format(exchang(ls)))

在這裏插入圖片描述
12.判斷一個數是否是質數(素數)?該如何聲明方
法?

def iszhishu(num):
    flag = True
    for i in range(2,num//2):
        if num%i == 0:
            flag = False
            break
    return flag
    
num = int(input("請輸入需要判斷的數字:"))
if iszhishu(num):
    print("{}是質數".format(num))
else:
    print("{}不是質數".format(num))

在這裏插入圖片描述
13.將指定的秒數轉變爲幾小時幾分幾秒。

def ex(num):
    a = num//3600
    b = (num - a*3600)//60
    c = (num - a*3600)%60
    return a,b,c
    
num = int(input("請輸入需要轉換的秒:"))
print("{}秒轉換爲{}時{}分{}秒".format(num,ex(num)[0],ex(num)[1],ex(num)[2]))

在這裏插入圖片描述
14.使用Random類給一個數組的所有元素賦隨機初值
(不重複)。

import random
def fuzhi(num):
    len = 0 ##記錄列表中元素的個數
    ls = []##空列表
    while len <= num :
        a = random.randint(0,num)
        if ls.count(a) == 0 : ##判斷生成的這個隨機數是否在列表中,不在則添加,在則跳過,通過count值來判斷
            ls.append(a)
            len += 1
        else :
            continue
    print(ls)
    
    
num = int(input("請輸入需要創建的列表長度:"))
fuzhi(num)

在這裏插入圖片描述
15.判斷一個整型數組是否是對稱的。所謂對稱就是
第一個元素等於最後一個元素,第二個元素等於倒數
第二個元素,依次類推,例如【7,3,1,3,7】就
是對稱的。

def duichen(ls):
    i = 0
    j = len(ls)-1
    flag = True
    for k in range(0,len(ls)//2):
        if ls[i] != ls[j]:
            flag = False
            break
        i += 1
        j -= 1
    return flag
    
ls = [1,2,3,4,5,6,5,4,3,2,1,]
if duichen(ls):
    print("{}是對稱的".format(ls))
else:
    print("{}是不對稱的".format(ls))

在這裏插入圖片描述
16.打印一個元組的所有值。

def print_yuansu(t):
    ls = list(t)
    for i in range(0,len(ls)):
        print(ls[i],end=" ")
    
t = (1,2,3,4,5,4,3,2,1) 
print("元組是{},打印元素:".format(t),end = " ")
print_yuansu(t)

在這裏插入圖片描述
17.查找一個元組中某個值是否存在,如果存在返回
這個值的索引,否則返回-1。

def chazhao(t,num):
    ls = list(t)
    if ls.count(num) >= 1:
        return ls.index(num)
    else:
        return -1
    
t = (1,2,3,4,5,4,3,2,1) 
print(t)
num =int(input("輸入需要判斷的元素:"))
print("元組是{},查詢元素是:{},下標是{}".format(t,num,chazhao(t,num)),end = " ")

在這裏插入圖片描述
18.將一個列表反轉過來,比如【2,3,1,4,7】轉
換爲【7,4,1,3,2】

def reverse(ls):
    ls.reverse()
    return ls

    
ls = [1,2,3,4,5] 

print("列表是{},翻轉後是{}".format(ls,reverse(ls)),end = " ")

在這裏插入圖片描述
19.求一個列表的最大值。
20.求一個列表的最小值。

def max(ls):
    max = ls[0]
    for i in range(0,len(ls)):
        if ls[i] > max:
            max = ls[i]
    return max

def min(ls):
    min = ls[0]
    for i in range(0,len(ls)):
        if ls[i] < min:
            min = ls[i]  
    return min
            
ls = [1,2,3,4,5,6,32,1,2,3,2,1,32] 

print("列表是:{},最大值是:{},最小值是:{}".format(ls,max(ls),min(ls)))

在這裏插入圖片描述
21.寫一個方法,實現在列表中指定的的位置前插入
一個值。

def insert(ls,num,num1):
    ls.insert(num,num1)
    return ls

            
ls = [1,2,3,4,5,6] 
print("插入前:{}".format(ls))
num = int(input("輸入插入的位置:"))
num1 = int(input("插入的元素"))
print("插入後:{}".format(insert(ls,num,num1)))

在這裏插入圖片描述
22.寫一個方法,刪除列表中指定位置的元素。

def remove(ls,num,):
    ls.remove(num)
    return ls

            
ls = [1,2,3,4,5,6] 
print("刪除前:{}".format(ls))
num = int(input("輸入刪除的位置:"))
print("刪除後:{}".format(remove(ls,num)))

在這裏插入圖片描述
23.猜數遊戲
1.隨機出現一個數(範圍自定義) 作爲答案
2.提示用戶輸入並根據答案和用戶輸入的大小關係輸
出大了? 小了?
3.5次機會
4.可以重複玩
5.根據猜對的次數進行評價
6.無論對錯 請告知答案

import random
def caisuzi():
    com = random.randint(0,101)
    count = 0
    while count < 5:
        your = int(input("請輸入一個0-100的數字:"))
        if your > com :
            print("輸入值大了")
            count += 1
        elif your < com :
            print("輸入值小了")
            count += 1
        else:
            print("猜對了!")
            count += 1
            break
    print("隨機數字是{}".format(com))
    pinjia(count)

        
def pinjia(count):
    if count == 1:
        print("牛逼了,兄弟!")
    elif count == 2 or count == 3:
        print("厲害啊,兄弟!")
    elif count == 4:
        print("不錯,不錯!")
    else:
        print("輸入次數達到上限,你有點菜呀,兄弟!")



while True:
    choice = int(input("請輸入你的選擇:1,繼續玩遊戲,其他,退出---"))
    if choice == 1:
        caisuzi()
    else:
        break

在這裏插入圖片描述
以上代碼均提供運行示例,代碼水平拙劣,不喜勿噴,實在是題目太多,也不想優化了,權當是拋磚引玉,希望各位水平更進!雖然我連磚都算不上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章