python課後作業總結
阿新 • • 發佈:2018-11-07
課後作業1. 一個列表中有多種字元型的元素,要求一將非字元型的全部改成字元型,要求二將所有字元型中的大寫字母改成小寫。
需要用到的知識有:
1.lower()函式,功能:將大寫字母改成小寫
2.列表生成式[s.lower() for s in L],其中s為列表中的元素而非列表
3.isinstance(元素 , 資料型別)函式,功能:判斷元素是否為某一資料型別
4.L.index(需要查詢的元素)函式,功能:查詢列表中元素的下標
5.L.insert(位置,需要插入的元素)函式,功能:將元素 插入列表的指定位置
實現的程式碼為:
課後作業2. 將字串首尾的空格去掉
方法一:使用while迴圈與slice功能實現
方法二:使用遞迴函式與slice功能實現
課後作業3. 漢諾塔的實現
需要使用到的知識是:遞迴,以及一些數學總結
該部落格對python遞迴法解決漢諾塔問題的解釋更加清晰
擴充套件作業:求出列表某元素的下標,列表中含有0個,一個或者多個該元素。
假設列表為:org = [1, 2, 2, 33, 2, 4, 5, 2],分別求出元素1、元素2的下標,其中元素2的所有下標都要求出。
方法一:先判斷元素的個數,然後判斷該個數的值,若為0則…若為1則..若大於1則以該個數為迴圈次數逐一獲取元素下標。
方法二:比方法一簡單,使用enumerate()函式
課後作業4. 利用迭代尋找出列表中的最大最小值,並返回一個tuple值。
1.列表是否可以迭代,使用isinstance(L,Iterable)函式判斷,不滿足迭代條件時,應該給出錯誤提示“raise TypeError(‘error’)”
2.列表為空時的情況
#iteration 迭代的使用
# for i,ch in enumerate(['S','H','E']):
# print(i,ch)
# for x,y in [(1,1),(2,4),(3,9)]:
# print(x,y)
# for i,x in enumerate ([(1,1),(2,4),(3,9)]):
# print(i,x)
#比較此三者的不同從而掌握enumarate()函式的應用及在for迴圈中引入兩個變數。for迴圈中最多也只能引入兩個變數
#功能:使用迭代找出list中的最大最小值,然後返回一個tuple
# def ite(L):
# min=L[0]
# max=L[0]
# for i in L:
# if i<min:
# min=i
# if i>max:
# max=i
# print(min,max)
# return (min,max)
# L=[96,11,17]
# L=[]#會報錯
# tuple=ite(L)
# print(tuple)
#完善以上程式,需要加上的功能:1.判斷資料型別是否可以迭代,若不可以應該輸出型別錯誤
#2.當輸入的資料長度為0或者小於0時應該輸出“None”,否則會報"indexError",可令L為空值進行測試
#3.實現類似Java的小標迴圈輸出
from collections.abc import Iterable
def ite(L):
if(not isinstance(L,Iterable)):#在python中注意嚴格區分大小寫,eg:iterable會報錯,none與None也是不同的
raise TypeError('error')
return None#功能1
elif len(L)==0 :
return(None,None)#功能2
else:
min=L[0]
max=L[0]
for i in L:
if i<min:
min=i
if i>max:
max=i
#print(min,max)
return (min,max)
L=[96,11,17]
# L=123
# L=[]
tuple=ite(L)
#下標迴圈輸出tuple
for i,ch in enumerate(tuple):#功能3
print(i,ch)