Python学习记录2

python

第四章列表题库练习(第四章第一部分)

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

输入一个整数列表,计算所有元素的平均值。结果保留两位小数。输入数据用逗号分隔
输入形式:
[1,2,3,4,5]
输出形式:
3.00

lst=eval(input())
print('%.2f'%(sum(lst)/len(lst)))

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

读入一个列表lst和正整数n和m,然后删除n~m之间的元素,不包括m位置的元素,n可以大于等于m,也可以小于m。如果输入的n和m不在列表lst的下标范围内,则输出"error"。
输入形式:
[1,2,3,4,5,6,7]
2,3
输出形式:
[1,2,4,5,6,7]

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但不包括m
		print(lst)
else:
	print('error')

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

输入一个整数列表,计算所有元素的平均值,如果结果中小数为0,请只输出整数部分,如果结果中的小数部分不为0,则输出结果保留两位小数。
输入形式:
[2,2,3,7,5,1]
输出形式:
3.33

import math
lst=eval(input())
a=sum(lst)/len(lst)
b =math.modf(a)		#取小数和整数,小数为b[0],整数为b[1]
if b[0]==0:
	print('%d'%a)	#若无‘%d’进行整数输出,直接print(a)输出则会带有一位小数点
else:
	print('%.2f'%a)

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

输入一个由字符串构成的列表和两个整数n和m(n和m在输入列表的下标范围以内),交换其中两个元素的值,打印输出交换后的列表。
输入形式:
hello world python is great
2 3
输出形式:
[‘hello’, ‘world’, ‘is’, ‘python’, ‘great’]

A=input().split(' ')
n,m=input().split(' ')
lst=list(A)
n=int(n)
m=int(m)
lst[n],lst[m]=lst[m],lst[n]	#交换列表元素位置
print(lst)

5.根据输入的年份计算当年是什么生肖年

输入年份数字,计算对应的生肖。例如输入2021,对应的是牛年。12生肖包括鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪
输入形式:
2021
输出形式:

import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')		
#要输出汉字,加入以上几行代码
def SX(year):
	SX=['猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊']
	a=year%12
	return SX[a]
year=int(input())
print(SX(year))

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

输入三个正整数n,m,l,生成指定长度的等差数列,存入列表中。其中n表示起始值,m表示列表元素的数量,l表示公差。
输入形式:
2,3,2
输出形式:
[2, 4, 6]

n,m,l=input().split(',')
n=int(n)
m=int(m)
l=int(l)
k=n+(m-1)*l
lst=list(range(n,k+1,l))	#首,末,间隔
print(lst)

7.统计字符串列表中每个字母出现的次数

编写程序,使用eval()函数读入一个仅包含字符串对象的列表,然后统计该列表中每个字母出现的次数。 列表中的字符串对象仅包含小写英文字母。
输入形式:
[“aaab”, “cccdz”]
输出形式:
a,3
b,1
c,3
d,1
z,1

lst=eval(input())
char1=[chr(x) for x in range(ord('a'),ord('z')+1)]     #得到从a到z的字符串列表
count=[0]*26       #统计每一个字母出现的次数,最开始每个次数均为0
for x in lst:   #取出列表中的字符串
    for c in x:     #取出字符串中的字符
        count[ord(c)-ord('a')]+=1   #对应字母表中的第几个字母
for c,cnt in zip(char1,count):      #将两个列表进行序列缝合
    if cnt>0:
        print('%s,%d'%(c,cnt))

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

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

lst=eval(input())
lst1=lst.copy()
for x in lst1:
	if x==0:
		remove(x)
		lst.append(0)
print(lst)

9.从一个列表中取出第n个元素,并重复m次,放到末尾,然后输出列表

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

lst=input().split(',')
n,m=input().split(",")
n=int(n)
m=int(m)
if n<len(lst):
    a=lst[n]
    for x in range(m):
        lst.append(a)
    lst=list(map(int,lst))		#将列表中的字符串转化为整数形式
    print(lst)
if n>len(lst):
	print('error')

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

读入一个整数列表,输出删除最大元素和最小元素后的列表。最大元素和最小元素可能有多个。
输入形式:
[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)

程序片段

1.判断一个数的两个加数是否在列表中

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

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

2.判断一个和的两个加数是否在列表中,每个元素不能使用2次

读入一个整数列表nums,读入一个整数sum。判断列表中是否有两个元素的和为sum。每个位置的元素只能使用一次。如果满足条件输出True,不满足输出False。
输入形式:
[1,2,3,4,5,6,6]
12
输出形式:
True

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(nums[x])>1:
			print(True)
			break
else:
	print(False)

3.把列表中的奇数移动到所有偶数的前面,保持奇数或者偶数的相对顺序不变

读入一个自然数列表,把所有的奇数移动到所有偶数的前面。保持奇数或者偶数的相对顺序不变。打印结果列表。
输入形式:
[1,2,3,4,5,6,7]
输出形式:
[1, 3, 5, 7, 2, 4, 6]

nums  =  eval(input())
print(f1(nums))    #  调用自定义函数
*
del f1(nums):
	a=nums.copy()
	for x in nums:
		if x%2==0:
			a.remove(x)
			a.append(x)
	return a

4.找出两个列表的相同元素(不使用集合),且去除重复元素。

已知两个列表,可能包含有相同元素,请找出两个列表的相同元素,并放入新的列表。打印新列表。输出结果中没有重复元素,如果两个列表中没有相同元素则输出[]。
输入形式:
[1,2,3,4,5]
[2,3,4,5,6]
输出形式:
[2, 3, 4, 5]

nums1  =  eval(input())    #  输入列表
nums2  =  eval(input())
nums1.sort()    #  排序
nums2.sort()
arr  =  []
i  =  j  =  0
while  i  <  len(nums1)  and  j  <  len(nums2):    #  相互比较开始
	if  nums1[i]  <  nums2[j]:
		i  +=  1
	elif  nums1[i]  >  nums2[j]:
	*	j+=1
	else:
	*	arr.append(nums2[j])
		i  +=  1
		j  +=  1
for  x  in  arr:
	while  arr.count(x)  >  1:
	*	arr.remove(x)
print(arr)    #  输出

你可能感兴趣的:(python,python)