Python期末測試
文章目錄
1.
Description:
給定用於表示年、月、日的3個整數y、m和d,判定該日期是該年的第幾天。
Input:
輸入用於表示日期(年、月、日)的3個正整數y、m和d,肯定是正整數,但是否屬於合法的日期資料未知。
Output:
返回值為整型
如所給日期資料不合法,返回-1。
如所給日期資料合法,則返回該日期是該年的第幾天。
將程式碼寫入函式func1
Sample Input:
func1(2019,1,32)
func1(2019,3,1)
Sample Output:
-1
60
2.
Description:
已知每隻雞有2只腳,每隻兔子有4只腳,求解雞兔同籠問題。給定雞和兔子的頭的總數m和腳的總數n。求雞和兔子的數量。
Input:
給定m和n為整數。
Output:
如果m和n中任何一個小於0,返回None。
如任何一個解不是整數,或任何一個解小於0,返回None。
返回元組(雞的數量, 兔子的數量)
將程式碼寫入函式func2
Sample Input:
func2(35, 110)
func2(35, 111)
func2(0, 0)
func2(100, 100)
Sample Output:
(15, 20)
None
(0, 0)
None
3.
Description:
判定一個整數列表裡的元素排序後能否構成等差數列。
Input:
給定lst為整數列表或空列表,不保證列表元素有序。
Output:
如果列表為空列表或只有一個元素,返回None。
如果列表有兩個元素,返回True。
如果列表有三個及以上的元素,根據情況返回True或False。
將程式碼寫入函式func3
Sample Input:
func3([1])
func3([19, 1])
func3([19, -1, 100])
func3([33, -7, 3, 13, 43, 53, 23])
Sample Output:
None
True
False
True
4.
Description:
計算並返回整數列表的中位數。中位數的含義:對於一個有序的數列,排列位置位於整個列表中間的那個元素的值即為中位數。如果數列有偶數個值,取最中間的兩個數值的平均數作為中位數。
Input:
給定lst為列表,不保證列表元素有序,不保證每個頂層元素都是整數,也不保證列表中一定有元素。
Output:
如果列表為空列表,返回None。
如果列表的頂層元素出現整數以外的型別,返回None。
對於非空的整數列表返回中位數(結果取整)。
將程式碼寫入函式func4
Sample Input:
func4([1, "abc"])
func4([19, [1, 2, 3]])
func4([19, -1, 100])
func4([19, -1, 1000, 101])
Sample Output:
None
None
19
60
5.
Description:
輸入一個包含3到11個單詞的字串,單詞與單詞之間用一個空格分開,最前和最後沒有空格,其中的單詞一定是0-9數字的英文單詞(單詞的字母可能大寫也可能小寫)。請編寫程式將其轉換為阿拉伯數字的字串。
Input:
給定sentence為字串。
Output:
返回電話號碼字串,如果輸入的長度不合法則返回None。
將程式碼寫入函式func5
Sample Input:
func5("one one two two three three four")
func5("One One Zero")
func5("Nine one one")
Sample Output:
"1122334"
"110"
"911"
6.
Description:
給定4個整數a, b, c, d,求集合s = {x / y | a <= x <= b, c <= y <= d}中元素的個數。
Input:
整數a, b, c, d滿足1 <= a <= b <= 100, 1 <= c <= d <= 100。
Output:
返回s中元素的個數。
將程式碼寫入函式func6
Sample Input:
func6(1, 10, 1, 1)
func6(1, 10, 1, 10)
func6(10, 10, 1, 10)
Sample Output:
10
63
10
7.
Description:
輸入兩個字串引數s1, s2(均不為空字串),和一個非零正整數n。請按照如下規則將字串s2插入到s1中,並返回生成的字串:
s1中每隔n個字元,插入一次s2;
如果最後一次不足n個字元,則先用空格符號補全到n個字元,然後插入一次s2
Input:
s1, s2均不為空字串,n為非零正整數
Output:
返回結果字串
將程式碼寫入函式func7(s1, s2, n)
Sample Input:
func7('abcd','#',1)
func7('abcd','##',2)
func7('abcd','##',3)
func7('abcd','##',5)
Sample Output:
'a#b#c#d#'
'ab##cd##'
'abc##d ##'
'abcd ##'
8.
Description:
給定一個字串,找出其中“<tag>”形式的標籤片段,並替換成“[TAG-len]”形式的片段。其中tag是由字母、數字和下劃線構成可變的標籤文字,TAG是將tag中的英文字母全部轉換成大寫字母后的形式,len是TAG的長度,詳見測試用例。
Input:
給定sentence為字串,不包含中文。字串中可替換部分可能出現0次或多次。
Output:
返回經過替換的字串。如沒有需要替換的內容,則原樣返回。
將程式碼寫入函式func8
Sample Input:
func8("President <4t>")
func8("hello world")
func8("he defended <_abc>, his decision to <43>")
Sample Output:
"President [4T-2]"
"hello world"
"he defended [_ABC-4], his decision to [43-2]"
Reference Code
import math
import re
def func1(y,m,d,md=[31,28,31,30,31,30,31,31,30,31,30,31]):
if (y%4==0 and y%100!=0) or y%400==0:md[1]=29
return -1 if m>12 or d>md[m-1] else sum(md[i] for i in range(m-1))+d
def func2(m,n):
return None if m<0 or n<0 or n%2!=0 or not 2*n>=4*m>=n else (2*m-n//2,n//2-m)
def func3(lst,i=0,d=0):
return None if len(lst)<2 else func3(sorted(lst),1,sorted(lst)[1]-sorted(lst)[0]) if i==0 else True if i==len(lst) else False if lst[i]-lst[i-1]!=d else func3(lst,i+1,d)
def func4(lst):
for i in lst:
if type(i)!=int:return None
return (sorted(lst)[len(lst)//2]+sorted(lst)[~(len(lst)//2)])//2
def func5(sentence,wton={'one':1,'two':2,'three':3,'four':4,'five':5,'six':6,'seven':7,'eight':8,'nine':9,'zero':0}):
sentence=sentence.lower().split()
if not 3<=len(sentence)<=11:return None
return ''.join([str(wton[i]) for i in sentence])
def func6(a,b,c,d):
return len(set(x/y for x in range(a,b+1) for y in range(c,d+1)))
def func7(s1,s2,n,ans=''):
if len(s1)%n!=0:s1=s1+' '*(n-len(s1)%n)
for i in range(len(s1)//n):ans+=s1[i*n:(i+1)*n]+s2
return ans
def func8(sentence):
for i in re.findall(r'<(.*?)>',sentence):sentence=re.sub(r'<.*?>','['+i.upper()+r'-'+str(len(i))+']',sentence,1)
return sentence
if __name__ == "__main__":
pass