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

猜你喜欢

转载自blog.csdn.net/qq_43549984/article/details/86306734