Python实验二

程序片段编程题

1. 题库:把数列的元素重复n次,然后元素的平方形成新列表,然后去除重复元素
【问题描述】

读入一个整数列表和正整数n(n>1),把列表中每个元素重复n次,并对每个元素进行平方形成新的列表,最后去除列表中的重复元素。打印输出新列表。
【输入形式】

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

第二行输入重复的次数。
【输出形式】

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

[2,3,4,5,5]

5

【样例输出】

[4, 9, 16, 25]

ls = eval(input())
n = eval(input())
# 重复列表元素n次
ls2=[];
for i in range(n):
    ls2+=ls
ls3 = [x*x for x in ls2]
# 下面代码去除重复元素
ls4=[]
for x in ls3:
   if not x in ls4:
           ls4.append(x)

print(ls4)

2. 题库:找出列表中的多数元素
【问题描述】

读入一个大小为n的列表,找出其中的多数元素。多数元素是指在列表中出现次数大于n//2的元素(每个列表最多一个多数元素)。根据代码框架编写一个函数。
【输入形式】

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

如果有多数元素,输出这个元素的值,如果没有多数元素,输出False
【样例输入】

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

3

def search(y):
    for x in y:
        if(y.count(x)>(len(y)//2)):
            return x;
    return False;

nums = eval(input())
y = search(nums)
print(y)

3. 题库:找出不是两个列表中的共有元素,在结果列表升序没有重复元素
【问题描述】

给定两个整型列表,找出不是两者共有的元素。这些元素不重复的放入新的列表,并升序排列。输出结果列表

【输入形式】

第一行输入一个列表,包括方括号,逗号分隔

第二行输入一个列表,包括方括号,逗号分隔
【输出形式】

直接用print打印结果列表
【样例输入】

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

[1,2,3,4,7,7,7,10,10]

【样例输出】

[5, 6, 8, 9, 10]

【样例说明】

在第一个列表中8,9有重复元素,在结果列表中只能有一个。第二个列表中的10也有重复元素,去除。升序排列元素。

nums1 = eval(input())
nums2 = eval(input())
nums3 = []
# 把不nums1中和nums2不重复的元素加入nums3
for x in nums1:
    if x not in nums2:
        if x not in nums3:
            nums3.append(x);

# 把num2中的元素不重复的加入nums3
for x in nums2:
    if x not in nums1:
        if x not in nums3:
            nums3.append(x)
# True为逆序,False为正序
nums3.sort(reverse = False)

print(nums3)

4. 题库:判断一个数的两个加数是否在列表中
【问题描述】

读入一个列表nums和整数n,判断构成n的两个加数是否在列表中。每个元素可以使用多次。如果存在,这输出True,不存在输出False。
【输入形式】

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

第二行输入整数
【输出形式】

True或者False
【样例输入】

[1,2,2,3]

6
【样例输出】

True
【样例说明】

输入的样例中,6=3+3,所以结果输出为True

如果第二行输入的是7。则输出False

nums = eval(input())
n = eval(input())
for x in nums:
    if n-x in nums:
        print(True)
        break
else:
    print(False)

5. 题库:判断一个和的两个加数是否在列表中,每个元素不能使用2次(片段)。
【问题描述】

读入一个整数列表nums,读入一个整数sum。判断列表中是否有两个元素的和为sum。每个位置的元素只能使用一次。如果满足条件输出True,不满足输出False。
【输入形式】

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

d第二行输入一个整数
【输出形式】

True或者False
【样例输入】

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

12

【样例输出】

True
【样例说明】

如果上面的输入列表中只有一个6,则不能构成和12. 因为每个元素只能使用一次。

nums = eval(input())
sum = eval(input())
for x in range(len(nums)):
    n = sum-nums[x]
    if n in nums:
        if n!=nums[x]:
            print(True)
            break
        else:
            if nums.count(n)>=2:
                print(True)
                break
else:
    print(False)

6. 题库:计算列表的度
【问题描述】

对于一个包含自然数的列表nums,计算他的度。列表的度定义为列表里任一元素出现的频率的最大值。

【输入形式】

从键盘输入一个列表,包含方括号,逗号分隔
【输出形式】

整数
【样例输入】

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

【样例输出】

4
【样例说明】

列的所有元素的频率中,元素3的频率最大为4.

def calDegrees(y):
    z=0;
    for x in y:
        if y.count(x)>z:
            z=y.count(x);
    return z;
        
nums = eval(input())
d=calDegrees(nums) #调用自定义函数
print(d)

编程题

1. 题库:计算整数列表平均值(根据结果判断是否输出小数部分)
【问题描述】

输入一个整数列表,计算所有元素的平均值,如果结果中小数为0,请只输出整数部分,如果结果中的小数部分不为0,则输出结果保留两位小数。
【输入形式】

从键盘输入列表,包含方括号,列表元素用逗号分隔。

【输出形式】

纯整数,或者带两位小数的浮点数
【样例输入1】

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

3

【样例输入2】

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

3.33

【样例说明】

[1,2,3,4,5]列表平均值为3,计算出来结果小数部分为0,只输出整数3;[2,2,3,7,5]列表平均值为浮点数,所以输出结果保留两位小数为3.33

import math
from statistics import mean
def pr(y):
    x = mean(y) 
    z=math.floor(x);
    if(x==z):
        print(z)
    else:
        print("%.2f" %x)

sums=eval(input());
pr(sums);

2. 题库:生成指定长度的等差数列
【问题描述】

输入三个正整数n,m,l,生成指定长度的等差数列,存入列表中。其中n表示起始值,m表示列表元素的数量,l表示公差。
【输入形式】

在同一行输入n,m,l三个值,中间用英文逗号分隔。
【输出形式】

打印输出列表
【样例输入】

2,3,2
【样例输出】

[2, 4, 6]

【样例说明】

第一个数字表示数列的起始值,第二个数字表示数据的个数,第三个数字表示差。

def shulie(n,m,l):
    sums = list(range(n,(n+m*l),l));
    print(sums);
x,y,z=eval(input());
shulie(x,y,z);

3. 题库: 把列表中数值为0的元素移动到列表的尾端,其他元素相对顺序不变。
【问题描述】

读入一个整数列表,把数值为0的元素移动到列表尾部,其他元素的相对顺序不变。输出调整后的列表。
【输入形式】

按照列表的形式输入,包括方块号,逗号分隔。
【输出形式】

直接使用print打印
【样例输入】

[1,0,2,0,3,0,4]

【样例输出】

[1, 2, 3, 4, 0, 0, 0]

def ling(y):
    z=[0];
    x=y.count(0);
    while 0 in y:
        y.remove(0);
    for i in range(x):
        y=y+z;
    print(y);
sums=eval(input());
ling(sums);

4. 题库:在列表中找出只出现一次的元素,并排序输出
【问题描述】

输入一个自然数列表,找出只出现一次的元素,并升序输出。如果没有只出现一次的元素,则输出False。
【输入形式】

输入包含自然数的列表,包括方括号,逗号分隔
【输出形式】

排序后的数字,每个数字之间用英文逗号分隔。或者False。
【样例输入1】

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

1,4,5

【样例输入2】

[9,9,9,12,12]
【样例输出2】

False

【样例说明】

[9,9,9,12,12]列表中,9出现3次,12出现2次,没有出现一次的元素,则输出False。

def one(y):
    x=[];
    for i in y:
        if y.count(i)==1:
            x.append(i);
    x.sort(reverse=False);
    if x==[]:
        print(False);
    else:
        print(*x,sep=',');
sums=eval(input());
one(sums);

5. 题库:从一个列表中取出第n个元素,并重复m次,放到末尾,然后输出列表
【问题描述】

输入一个整数列表和整数n(n可以是负数)和正整数m,从该列表中选择第n个元素,把该元素重复m次,然后放到列表的尾端,最后输出列表。如果输入的n值不在列表下标范围之内,则输出"error"
【输入形式】

输入时,第一行输入列表的元素,用英文逗号分隔。

第二行输入两个数字n和m,用英文逗号分隔。

【输出形式】

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

1,2,3,4,5

2,3
【样例输出1】

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

【样例输入2】

1,2,3,4,5

5,3
【样例输出2】

error

【样例说明】

样例2中,输入的n值为5,但是列表的元素一共才5个,超出下标范围,输出error

import math
def mowei(y,n,m):
    if n!=math.floor(n):
        print('error');
    else:
        if n>=(-len(y)) and n<len(y):
            x=y[n];
            for i in range(m):
                y.append(x);
            print(y);
        else:
            print('error');   
            
sums=list(eval(input()));
n,m=eval(input());
mowei(sums,n,m);

6. 题库:交换列表中两个元素的值,并输出列表
【问题描述】

输入一个由字符串构成的列表和两个整数n和m(n和m在输入列表的下标范围以内),交换其中两个元素的值,打印输出交换后的列表。
【输入形式】

第一行输入由空格分隔的多个字符串

第二行输入两个整数n和m,表示元素的位置,两个数字之间用空格区分。
【输出形式】

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

hello world python is great

2 3
【样例输出1】

[‘hello’, ‘world’, ‘is’, ‘python’, ‘great’]

【样例输入2】

hello world python is great

-2 3
【样例输出2】

[‘hello’, ‘world’, ‘python’, ‘is’, ‘great’]

【样例说明】

多个字符串由空格区分,程序读入后,转变成列表,然后交换指定位置的元素,最后使用print直接输出列表。

def Change(y,m,n):
    y[m],y[n]=y[n],y[m];
    print(y);
sums=input();
m,n = list(map(int, input().strip().split()))
y=sums.split();
Change(y,m,n);

7. 题库:计算整数列表的平均值
【问题描述】

输入一个整数列表,计算所有元素的平均值。结果保留两位小数。输入数据用逗号分隔
【输入形式】

从键盘输入一个整数列表,包括方括号,元素逗号分隔
【输出形式】

输出所有元素的平均值,结果保留两位小数

【样例输入】

[1,2,3,4,5]

【样例输出】

3.00
【样例说明】

用列表的形式输入一串整数,然后计算平均值,输出3.00,结果保留了两位小数。

def pingjun(y):
    print("%.2f" %(sum(y)/len(y)));
sums=eval(input());
pingjun(sums);

8. 题库:找出自然数列表中的素数,并放入另外一个列表,然后输出找出的素数
【问题描述】

读入一个自然数构成的列表,找出其中的每一个素数,然后放入另外一个列表,并输出这个列表。
【输入形式】

按照列表的形式输入,包括方括号,元素之间用逗号分隔。
【输出形式】

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

[2,3,5,7,9,11,23]

【样例输出】

[2, 3, 5, 7, 11, 23]

【样例说明】

所有的输入数据在一行。所有的输出在一行。

def sushu(y):
    x=[];
    for i in y:
        if i>=2:
            for j in range(2,i,1):
                if i%j==0:
                    break;
            else:
                x.append(i);
    print(x);
sums=eval(input());
sushu(sums);

你可能感兴趣的:(python)