程序片段编程题

1. 题库:把长度为2n的列表分成n对,使得每一对的最小值的和最大。
【问题描述】

给定长度为2n的自然数列表nums,把这些数分成n对,把每一对的最小值加起来(不同的分法,其和可能不同),输出最小值和的最大值。
【输入形式】

输入偶数长度的列表,包括方括号,逗号分隔
【输出形式】

和的最大值,整数
【样例输入】

[1,4,3,2]
【样例输出】

4
【样例说明】

把列表按照某种分法,分成n对,把每一对的最小值加起来。不同的分法,其和是不同的。

例如[1,4,3,2]可以分为:4,1和3,2 或者 4,2和3,1;或者4,3和2,1;显然4,3和2,1这种分法最小值的和最大,3+1=4,前面两种最小值都是3。所以输出结果4.

def maxsum(y):    sum=0;    y.sort(reverse=False);    for i in range(len(y)):        if i%2==0:            sum+=y[i];    return sum;nums = eval(input())v = maxsum(nums)#调用自定义函数print(v)

2. 题库:编写函数获得第n项斐波那契数列的值
【问题描述】

编写函数获得第n项斐波那契数列的值。斐波那契数列前10项如下:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]。第1项为1,第二项为1,从第三项开始,每一项等于前两项之和。

【输入形式】

一个大于2的整数。如3,4,5等。
【输出形式】

一个整数,第n项的斐波那契数列的值
【样例输入】

10
【样例输出】

55
【样例说明】

项的序号从1开始。只输出第n项的值。

def Fibonacci(num,  n):    last=num[0];    now=num[1];    fibnext=1    for i in range(n):       if i<2:            fibnext=1       else:           fibnext=last+now           last=now           now=fibnext    return fibnextnum = [1, 1]n = int(input())print(Fibonacci(num, n))

3. 题库:使用列表生成式生成指定范围内的偶数列
【问题描述】

输入两个数,n,m。n是偶数,产生n和m之间的偶数。不包含m。输出偶数列表。
【输入形式】

n,m
【输出形式】

直接打印列表
【样例输入】

4,11

【样例输出】

[4, 6, 8, 10]

n, m = eval(input())nums = [x for x in range(int(n),int(m),2)]print(nums)

编程题

1. 题库:把分布在两个列表中的姓名和成绩配对后形成一个列表
【问题描述】

已知一个列表中存放的是一些学生的姓名,另外一个列表存放的是学生对应的考试成绩。两个列表长度相同。要求,把姓名和对应的成绩进行组合,形成一个列表。该列表包含一个嵌套列表,每个子列都是姓名和对应的成绩。最后输出形成的新列表。
【输入形式】

分两行输入,第一行输入姓名,按照字符串的方式输入,多个姓名之间用逗号分隔。第二行输入成绩,包含方括号,元素之间用英文逗号分隔。
【输出形式】

直接用print输出新的列表。
【样例输入】

tom,jack,jone,mike

[88,89,34,90]
【样例输出】

[[‘tom’, 88], [‘jack’, 89], [‘jone’, 34], [‘mike’, 90]]

【样例说明】

把两个单独的列表合并成嵌套列表。

sums=input().split(',')sums2=eval(input())sums3=list(sums)sums4=()sums5=[]for i in range(len(sums3)):    sums4=(sums3[i],sums2[i])    sums5.append(list(sums4))print(sums5)

2. 题库:删除列表中指定位置的元素。
【问题描述】

读入一个列表lst和正整数n和m,然后删除n~m之间的元素,不包括m位置的元素,其中n小于或者等于m。如果输入的n和m不在列表lst的下标范围内,则输出”error”。
【输入形式】

第一行输入列表。包含方括号,列表元素用逗号分隔。

第二行输入两个整数n和m,中间用一个逗号分割。
【输出形式】

直接用print输出列表
【样例输入1】

[1,2,3,4,5,6,7]

2,3
【样例输出1】

[1,2,4,5,6,7]

【样例输入2】

[1,2,3,4,5,6]

7,3
【样例输出2】

error

【样例说明】

样例1:输入列表[1,2,3,4,5,6,7]和正整数2,3,则删除列表第2位置元素,打印输出[1,2,4,5,6,7]

样例2:输入列表[1,2,3,4,5,6]和正整数7,3,7不在列表下标的范围之内,输出“error”

lst=eval(input())n,m=input().split(',')#一行输入多个字符n=int(n)m=int(m)if n<len(lst) and m<len(lst):#控制输入的n和m在列表的下标内if n<m:del lst[n:m]print(lst)else:del lst[m+1:n+1]#包括n但不包括mprint(lst)else:print('error')

3. 题库:删除列表中的最大元素和最小元素
【问题描述】

读入一个整数列表,输出删除最大元素和最小元素后的列表。最大元素和最小元素可能有多个。
【输入形式】

输入列表,包括方括号
【输出形式】

直接用print输出列表
【样例输入】

[1,2,3,4,5,6,1,7,7]
【样例输出】

[2, 3, 4, 5, 6]

lst=eval(input())a=max(lst)b=min(lst)lst1=lst.copy()for x in lst:if x==a or x==b:lst1.remove(x)print(lst1)

4. 题库:删除列表中的重复值 -《Python编程基础及应用》习题4-8
【问题描述】

输入一个列表,删除其中的重复值,再输出。

要求:假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。 不同元素在列表中的相对位置不应被改变。

【输入形式】

[元素1, 元素2, … , 元素n]

【输出形式】

[元素1,元素2, … , 元素k]

【样例输入】

[4,3,2,3,2,4,True]
【样例输出】

[3, 2, 4, True]
【样例说明】

提示:将形如”[1,3,5]”的字符串转换成列表可以使用eval()函数。 注意,输出格式应与输出样例一致,涉及空格,逗号等。

切不可一边遍历列表,一边删除列表中的元素。

list1 = eval(input())list1.reverse() list2 = ['']for i in list1:    if i not in list2:        list2.insert(0, i)            list2.pop()                         print(list2)

5. 题库:列表生成及循环左移 -《Python编程基础及应用》
【问题描述】

从键盘读入一个整数n, 并完成下述任务:

使用快速列表生成语法生成列表 [1, 2, … ,n-1, n];

使用for循环将列表循环左移一个位置;

输出循环左移后的列表。

【输入形式】

n

【输出形式】

[2, 3, … , n, 1]

【样例输入】

5
【样例输出】

[2, 3, 4, 5, 1]
说明:符号均为英文符号,注意数字间可能包含空格。

n=eval(input())sums=range(1,n+1)sums2=[]m=sums[0]for i in range(len(sums)-1):    sums2.append(sums[i+1])sums2.append(m)print(sums2)

6. 题库:把列表里面的个位正整数组合成一个最大的整数
【问题描述】

读入一个正整数列表,每个正整数都只有一位。把这些列表里面的数字,按位数组织成一个最大的整数,每个数字占据一位,不能重复使用。然后输出这个数字。例如列表[1,2,3,4] 可以组成1234, 或者4321等多个整数。输出最大整数。
【输入形式】

一个包含一位自然数的列表
【输出形式】

整数
【样例输入】

[0,1,2,3,2]
【样例输出】

32210

lst=eval(input())lst.sort(reverse=True)sum=''for i in range(len(lst)):    sum+=str(lst[i])print(int(sum))