第四章作业

1.计算列表的度

【问题描述】

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

【输入形式】

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

整数
【样例输入】

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

【样例输出】

4

代码:

#第一种:
def calDegrees(nums):
    dic={}
    for i in nums:
        if i not in dic:
            dic[i]=1
        else:
            dic[i]+=1
    return max(dic.values())
nums  =  eval(input())
d=calDegrees(nums)  #调用自定义函数
print(d)
#第二种:
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)

2.把数列的元素重复n次,然后元素的平方形成新列表,然后去除重复元素

【问题描述】

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

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

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

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

[2,3,4,5,5]

5

【样例输出】

[4, 9, 16, 25]

代码:

ls  =  eval(input())
n  =  eval(input())
ls2 = ls*n
ls3  =  [x*x  for  x  in  ls2]
ls4=[]
for  x  in  ls3:
    if x not in ls4:
        ls4.append(x)
print(ls4)

3.把长度为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(nums):
    b = []
    c = []
    for x in range(0,int(len(nums)/2)):
        b.append(nums.pop(nums.index(max(nums))))
        c.append(nums.pop(nums.index(max(nums))))
    return(sum(c))  

nums  =  eval(input())
v  =  maxsum(nums)#调用自定义函数
print(v)
#第二种:
def maxsum(nums):
    n=len(nums)
    c=0
    nums.sort(reverse=True)
    for x in range(1,n+1,2):
          c=c+nums[x]
    return c

nums  =  eval(input())
v  =  maxsum(nums)#调用自定义函数
print(v)

4.编写函数获得第n项斐波那契数列的值

【问题描述】

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

【输入形式】

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

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

10
【样例输出】

55

代码:

#第一种:
def Fibonacci(num,n):
    n_2 = 0
    n_1 = 1
    current  = 1
    for x in range(2, n+1):
        current = n_2 + n_1
        n_2 = n_1
        n_1 = current
    return current
# print('第%d个数是%d'%(n, current))
num  =  [1,  1]
n  =  int(input())
print(Fibonacci(num,  n))
#第二种:
def Fibonacci(num,n):
    a=1
    b=1
    if n>2:
        for x in range(n-2):
            c=a+b
            a=b
            b=c
    else:
        c=1
    return c
num  =  [1,  1]
n  =  int(input())
print(Fibonacci(num,  n))

5.找出不是两个列表中的共有元素,在结果列表升序没有重复元素

【问题描述】

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

【输入形式】

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

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

直接用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]

代码:

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)
nums3.sort()
print(nums3)

6.使用列表生成式生成指定范围内的偶数列

【问题描述】

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

n,m
【输出形式】

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

4,11

【样例输出】

[4, 6, 8, 10]

代码:

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

7.找出列表中的多数元素

【问题描述】

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

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

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

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

3

代码:

def search(nums):
    n = len(nums)
    for x in nums:
        if nums.count(x)>(n/2):
            m = x
        else:
            m = False
    return m
nums  =  eval(input())
y  =  search(nums)
print(y)

8.把分布在两个列表中的姓名和成绩配对后形成一个列表

【问题描述】

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

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

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

tom,jack,jone,mike

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

[['tom', 88], ['jack', 89], ['jone', 34], ['mike', 90]]

代码:

a = input().split(',')
a = list(a)
b = eval(input())
m = []
for x in range(len(a)):
    n = []
    n.append(a[x])
    n.append(b[x])
    m.append(n)
print(m)

9.生成指定长度的等差数列

【问题描述】

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

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

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

2,3,2
【样例输出】

[2, 4, 6]

代码:

a,b,c = map(int,input().split(','))
d = []
for x in range(b):
    m =  a + c*x
    d.append(m)
print(d)

10.删除列表中指定位置的元素

【问题描述】

读入一个列表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

代码:

#第一种:
a = eval(input())
n,m = map(int,input().split(','))
if n <= len(a):    
    b = []
    for x in range(n):
        b.append(a[x])
    for i in range(m,len(a)):
        b.append(a[i])
    print(b)
else:
    print('error')
#第二种:
a = eval(input())
n,m = map(int,input().split(','))
if n <= len(a):
    for x in range(n,m):
        b = a.pop(x)
    print(a)
else:
    print('error')
#第三种:
a = eval(input())
n,m = map(int,input().split(','))
if n <= len(a):
    for x in range(n,m):
        del a[x]
    print(a)
else:
    print('error')

11.找出自然数列表中的素数,并放入另外一个列表,然后输出找出的素数

【问题描述】

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

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

直接用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)
#第二种:
y = eval(input())
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)

12.计算整数列表平均值(根据结果判断是否输出小数部分)

【问题描述】

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

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

【输出形式】

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

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

3

【样例输入2】

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

3.33

代码:

a = eval(input())
if sum(a)%len(a)==0:
    print('%d'%(sum(a)/len(a)))
else:
    print(f'{sum(a)/len(a):.2f}')

13.计算整数列表的平均值

【问题描述】

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

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

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

【样例输入】

[1,2,3,4,5]

【样例输出】

3.00

代码:

a = eval(input())
b = sum(a)/len(a)
print(f"{b:.2f}")

14.交换列表中两个元素的值,并输出列表

【问题描述】

输入一个由字符串构成的列表和两个整数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']

代码:

#第一种:
a = list(map(str,input().split()))
b,c = map(int,input().split())
d = a.copy()
d[b]=a[c]
d[c]=a[b]
print(d)
#第二种(深拷贝):
import copy
a = list(map(str,input().split()))
b,c = map(int,input().split())
d = copy.deepcopy(a)
d[b]=a[c]
d[c]=a[b]
print(d)

15.删除列表中的最大元素和最小元素

【问题描述】

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

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

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

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

[2, 3, 4, 5, 6]

代码:

a = eval(input())
b = a.count(max(a))
c = a.count(min(a))
if len(a) > 0:
    for x in range(b):
        del a[a.index(max(a))]
if len(a) > 0:
    for x in range(c):
        del a[a.index(min(a))]
print(a)

16.删除列表中的重复值

【问题描述】

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

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

[元素1, 元素2, ... , 元素n]
【输出形式】

[元素1,元素2, ... , 元素k]
【样例输入】

[4,3,2,3,2,4,True]

【样例输出】

[3, 2, 4, True]

代码:

#第一种:
a = eval(input())
a.reverse()
b = []
for x in a:
    if x not in b:
        b.append(x)
        #b.append(a.pop(a.index(x)))
b.reverse()
print(b)
#第二种:
import copy
a = eval(input())
b = copy.deepcopy(a)
for x in a:
    if a.count(x)>1:
        for i in range((a.count(x))-1):
            b.remove(x)
    else:
        break
print(b)

17.列表生成及循环左移

【问题描述】

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

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

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

  3. 输出循环左移后的列表。

【输入形式】

n

【输出形式】

[2, 3, ... , n, 1]


【样例输入】

5

【样例输出】

[2, 3, 4, 5, 1]

代码:

#第一种:
n = int(input())
a = list(range(1,n+1))
b = a.copy()
for x in range(n-1):
    b[x]=a[x+1]
b[n-1]=a[0]
print(b)
#第一种:
import copy
n = int(input())
a = list(range(1,n+1))
b = copy.deepcopy(a)
for x in range(n-1):
    b[x]=a[x+1]
b[n-1]=a[0]
print(b)

18.把列表里面的个位正整数组合成一个最大的整数

【问题描述】

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

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

整数
【样例输入】

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

32210

代码:

#第一种:
a = eval(input())
a.sort(reverse=True)
s = ''
for x in a:
      s = s+str(x)
s = int(s)
print(s)
# #第二种:
a = eval(input())
a.sort(reverse=True)
for x in range(len(a)):
    print(a[x],end='')
#第三种:
a = eval(input())
b = []
for x in range(len(a)):
    b.append(a.pop(a.index(max(a))))
    print(b[x],end='')

19.在列表中找出只出现一次的元素,并排序输出

【问题描述】

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

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

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

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

1,4,5

【样例输入2】

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

False

代码:

#第一种:
a = eval(input())
b = []
for x in a:
    if a.count(x)>1:
        for i in range(a.count(x)):
            a.remove(x)
if len(a)>0:
    a.sort()
    b = ','.join(str(i) for i in a)
    print(b)
else:
    print(False)
#第二种:
a = eval(input())
b = []
for x in a:
    if a.count(x)==1:
        b.append(x)
if len(b)>0:
    b.sort()
    b = ','.join(str(i) for i in b)
    print(b)
else:
    print(False)

20.把列表中数值为0的元素移动到列表的尾端,其他元素相对顺序不变

【问题描述】

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

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

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

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

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

代码:

a = eval(input())
b = a.count(0)
for x in range(b):
    a.remove(0)
for x in range(b):
    a.append(0)
print(a)

21.从一个列表中取出第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

代码:

a = list(map(int,input().split(',')))
b,c = eval(input())
d = []
if (b+1) <= len(a):
    for x in range(c):
        d.append(a[b])
    a = a+d
    print(a)
else:
    print('error')

你可能感兴趣的:(python作业记录,python)