6-1 求列表中能被3整除的数1
本题要求实现一个函数mult3(),带一个整数列表作为输入参数,仅仅输出列表中是3的倍数的那些数值,每个值占一行。
函数接口定义:
mult3(lst)
lst是传入的整数列表。
裁判测试程序样例:
# 请在这里填写答案
def main():
mylist = list(map(int,input().split(",")))
mult3(mylist)
main()
输入样例:
3,1,6,2,3,9,7,9,5,4,5
输出样例:
输出:
3
6
3
9
9
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
def mult3(lst:list):
for i in lst:
if i % 3 == 0:
print(i)
#方法二
def mult3(lst):
for i in lst:
if i%3==0:
print(i)
6-2 求列表中和为n的整数对
本题要求实现一个函数pairSum(),带两个输入参数:一个值不重复的整数列表lst和一个整数n。输出列表中所有和为n的整数对的索引。
函数接口定义:
pairSum(lst, n)
lst是传入的整数列表,n为整数
裁判测试程序样例:
# 请在这里填写答案
def main():
#输入一系列以逗号隔开的整数
lst = list(map(int,input().split(",")))
#输入一个整数
n = int(input())
pairSum(lst, n)
输入样例:
7,8,5,3,4,6
11
输出样例:
在这里给出相应的输出。例如:
0 4
1 3
2 5
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
def pairSum(lst, n):
for i in range(len(lst)):
for q in range(i,len(lst)):
if i != q and lst[i] + lst[q] == n:
print(i, q)
#方法二
from itertools import *
def pairSum(lst, n):
l=list(permutations(range(len(lst)),2))
for i,j in l:
if lst[i]+lst[j]==n and i<j:
print(str(i)+" "+str(j))
7-1 词频统计 - 实验11 字典操作及应用
从键盘读入由仅由英文构成的多行文本,借助于字典统计其中每个单词出现的次数。然后按字典递增序按格式输出每个单次出现的次数。
要求:
- 所有单词不区分大小写,输出时按小写格式输出;
- 需要排除! , : ?等英文符号,即这些符号不应作为单词的构成部分;
- 需要排除0,1,2,… 9等数字,即这些数字不应作为单词的构成部分。
输入格式:
行数n
第1行内容
第2行内容
…
第n行内容
输出格式:
单词1 单词1出现次数
单词2 单词2出现次数
…
单词k 单词k出现次数
注意: 单词1, 2,… k 按字典递增序。
输入样例:
4
Hello! baby! Jupyter 4 class
class ultimately.
class
jupyter
输出样例:
baby 1
class 3
hello 1
jupyter 2
ultimately 1
参考答案
#方法一
n = int(input())
dict1 = {}
list1 = []
for ppp in range(n):
str = input()
a = ''
for i in str:
if i.isalpha():
a += i.lower()
elif a != '':
if a in list1:
dict1[a] = dict1[a] + 1
a = ''
else:
dict1[a] = 1
list1.append(a)
a = ''
if a != '':
if a in list1:
dict1[a] = dict1[a] + 1
a = ''
else:
dict1[a] = 1
list1.append(a)
a = ''
list1.sort()
for i in list1:
print(i, dict1[i])
#方法二
x=eval(input())
lst=[]
for i in range(x):
n=input().lower()
for i in ["!",",",":","?","."]:
n=n.replace(i," ")
lst+=n.split()
dct={}
for i in lst:
if i.isdigit():
continue
else:
v=dct.get(i,0)
dct[i]=v+1
lst1=sorted(dct.items(),key=lambda x:x[0])
for i,j in lst1:
print(i+" "+str(j))
7-2 集合添加元素
向集合中加入单一元素,可以使用.add() 方法操作,该操作将向集合中加入。
应用你的知识帮助你的好朋友小明,小明喜欢集邮,他有大量的来自不同国家的邮票,他决定数一下他的集邮册中共有来自多少个不同国家的邮票,他请你帮忙,你一个一个的把N张邮票拿出来,找出共有多少个不重复的国家。
输入格式:
第一行输入一个整数N,表示所有邮票的数目
接下来的N行,每行输入一张邮票来自哪一个国家的名字
输出格式:
在一行中输出不重复的国家的数量。
输入样例:
7
UK
China
USA
France
New Zealand
UK
France
输出样例:
5
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
n = int(input())
i = input()
list1 = {i}
for lll in range(1,n):
i = input()
list1.add(i)
print(len(list1))
#方法二
n=eval(input())
s=set()
for i in range(n):
s.add(input())
print(len(s))
7-3 集合应用–列表
集合是一个无序的、没有重复元素的数据类型,在输出或转为序列类型时,其元素位置随机出现。
李白是一个社区大学的老师,一天,他让学生小明计算一下温室里植物的平均高度。
平均高度 = 不同高度的和 / 不同高度的数量
输入格式:
输入N 个用空格分隔的植物的高度
输出格式:
在一行内输出植物的平均高度,保留小数点后3位
输入样例:
161 182 161 154 176 170 167 171 170 174
输出样例:
169.375
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
list1 = list(map(int, input().split()))
list2 = list(set(list1))
print("%.3f" % (sum(list2) / len(list2)))
#方法二
x=set(input().split())
print("{:.3f}".format(sum(map(int,x))/len(x)))
7-4 查验身份证
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z
;最后按照以下关系对应Z
值与校验码M
的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
输入格式:
输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。
输出格式:
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed
。
输入样例1:
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
输出样例1:
12010X198901011234
110108196711301866
37070419881216001X
输入样例2:
2
320124198808240056
110108196711301862
输出样例2:
All passed
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
def jisuan(str):
sum = 0
list1 = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
for i in range(17):
sum += int(str[i]) * list1[i]
return sum % 11
dict1 = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
flag = True
nnn = eval(input())
for lll in range(nnn):
id = input()
try:
i = jisuan(id)
if dict1[i] != id[17]:
print(id)
flag = False
except:
print(id)
flag = False
if (flag):
print("All passed")
#方法二
w=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
m=["1","0","X","9","8","7","6","5","4","3","2"]
n=eval(input())
f=0
for i in range(n):
sf=input()
nm=sf[:-1]
sg=sf[-1]
try:
lst=list(map(int,nm))
s=0
for i in range(17):
s+=lst[i]*w[i]
s=m[s%11]
if s!=sg:
print(sf)
f=1
except:
print(sf)
f=1
continue
if f==0:
print("All passed")
7-5 淘淘不喜欢3、6、9
淘淘不喜欢数字3、6、9,在数数时,从1开始数,带有这三个数字的都会跳过。如:1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 24, 25, 27, 28, 40,…… 输入一个n,求淘淘数到n时,她所数的所有数之和是多少?若n包含3、6、9,则显示,淘淘不会数到这个数。
输入格式:
输入一个正整数n。
输出格式:
输入淘淘数的数之和,或者提示淘淘不会数n。
输入样例1:
在这里给出一组输入。例如:
12
输出样例1:
在这里给出相应的输出。例如:
60
输入样例2:
在这里给出一组输入。例如:
13
输出样例2:
在这里给出相应的输出。例如:
淘淘不会数13
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
n = eval(input())
list1 = []
if '3' not in str(n) and '6' not in str(n) and '9' not in str(n):
for i in range(1, n + 1):
if '3' not in str(i) and '6' not in str(i) and '9' not in str(i):
list1.append(i)
print(sum(list1))
else:
print("淘淘不会数%s" % n)
#方法二
n=eval(input())
if "3" in str(n) or "6" in str(n) or "9" in str(n):
print("淘淘不会数{}".format(n))
else:
l3=[i for i in range(1,n+1) if not "3" in str(i)]
l6=[i for i in range(1,n+1) if not "6" in str(i)]
l9=[i for i in range(1,n+1) if not "9" in str(i)]
print(sum(set(l3)&set(l6)&set(l9)))
7-6 sdut-统计两个字符串中相同的字符个数
输入字符串A、字符串B,求在字符串A、字符串B中相同的字符个数。
输入格式:
第一行输入,表示字符串A。
第二行输入,表示字符串B。
输出格式:
在一行内,输出字符串A、B中相同字符的个数。
输入样例:
AEIOU
HELLO World!
输出样例:
在这里给出相应的输出。例如:
2
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
n = input()
m = input()
dict1 = {}
for i in n:
if i in m:
dict1[i] = 1
print(len(dict1))
#方法二
print(len(set(input())&set(input())))
7-7 sdut-统计工龄
给定公司N名员工的工龄,按工龄增序输出每个工龄段有多少员工。
输入格式:
首先给出正整数N(≤105 ),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]
。
输出格式:
按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。
每项占一行。
输入样例:
8
10 2 0 5 7 2 5 2
输出样例:
在这里给出相应的输出。例如:
0:1
2:3
5:2
7:1
10:1
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
n = int(input())
list1 = list(map(int, input().split()))
list2 = list(set(list1))
dict1 = {}
for i in list1:
if i in dict1:
dict1[i] += 1
else:
dict1[i] = 1
for i in sorted(list2):
print("%s:%s" % (i, dict1[i]))
#方法二
n=input()
lst=list(map(int,input().split()))
dct={}
for i in lst:
v=dct.get(i,0)
dct[i]=v+1
l=sorted(dct.items(),key=lambda x:x[0])
for i,j in l:
print("{}:{}".format(i,j))
7-8 sdut-字典合并
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。
注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串;
在第二行中输入第二个字典字符串。
输出格式:
在一行中输出合并的字典,输出按字典序。
“1” 的 ASCII 码为 49,大于 1,排序时 1 在前,“1” 在后。其它的字符同理。
输入样例1:
{1:3,2:5}
{1:5,3:7}
输出样例1:
1:8
2:5
3:7
输入样例2:
{"1":3,1:4}
{"a":5,"1":6}
输出样例2:
1:4
'1':9
'a':5
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
参考答案
#方法一
dict1 = dict(eval(input()))
dict2 = dict(eval(input()))
list1 = []
for i in dict1:
if i in dict2:
dict2[i] += dict1[i]
else:
dict2[i] = dict1[i]
for i in dict2:
list1.append(i)
list2 = list(set(list1))
list3 = []
list4 = []
for i in list2:
if isinstance(i, str):
list3.append(i)
list4.append(ord(i))
else:
list4.append(i)
dict3 = {}
for i in dict2:
if isinstance(i, str):
dict3[ord(i)] = dict2[i]
else:
dict3[i] = dict2[i]
for i in sorted(list4):
if chr(i) not in list3:
print("%s:%s" % (i, dict3[i]))
else:
print("'%s':%s" % (chr(i), dict3[i]))
#方法二
d1=eval(input())
d2=eval(input())
for i in d2:
v=d1.get(i,0)
x=d2[i]
d1[i]=v+x
s=sorted(d1.items(),key=lambda x:x[0] if type(x[0])==type(1) else ord(x[0]))
for i,j in s:
if type(i)==type(1):
print("{}:{}".format(i,j))
else:
print("'{}':{}".format(i,j))