7-1 输出星期名缩写 (70 分)
输入一个1到7的数字,输出对应的星期名的缩写。
1 Mon
2 Tue
3 Wed
4 Thu
5 Fri
6 Sat
7 Sun
month={1:'Mon',2:'Tue',3:'Wed',4:'Thu',5:'Fri',6:'Sat',7:'Sun'}
x=int(input())
print(month[x])
7-2 图的字典表示 (20 分)
图的字典表示。输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度。比如上图0点表示:
{‘O’:{‘A’:2,‘B’:5,‘C’:4}}。用eval函数处理输入,eval函数具体用法见第六章内置函数。
n=int(input())
k=0
v=set();e=set();s=0
while True:
k+=1
if k>4:
print(len(v),len(e),s)
break
else:
x=input()
y=eval(x)
for key,value in y.items():
v.add(key)
if type(value)==dict:
for key1,value1 in value.items():
v.add(key1)
e.add((key,key1))
s+=value1
7-3 四则运算(用字典实现) (30 分)
四则运算(用字典实现),比较c语言的switch语句。
result={'+':'x+y','-':'x-y','*':'x*y','/':'x/y if y!=0 else "divided by zero"'}
x=int(input())
z=input().strip()
y=int(input())
r=eval(result.get(z))
if type(r)!=str:
print(format(r,'.2f'))
else:
print(r)
7-4 分析活动投票情况 (20 分)
利用集合分析活动投票情况。第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。输入一个得票字符串,求第二小队没有得票的队员
a={teamer:0 for teamer in range(1,11)}
x=list(input().strip().split(','))
c=[]
for i in x:
a[int(i)]+=1
for i in range(6,11):
if a[i]==0:
c.append(i)
for i in c:
if i!=c[-1]:
print(i,end=' ')
else:
print(i)
7-5 统计字符出现次数 (20 分)
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
a=input()
b=input()
diccount={b:0}
list=[char for char in a]
for i in list:
if i==b:
diccount[b]+=1
print(diccount[b])
7-6 统计工龄 (20 分)
给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。
n=int(input())
list1=list(map(int,input().split()))
lst=set(list1)
diccount={char:0 for char in lst}
for char in list1:
diccount[char]+=1
for key,value in diccount.items():
print('{}:{}'.format(key,value))
7-7 列表去重 (40 分)
输入一个列表,去掉列表中重复的数字,按原来次序输出!
a=input().strip()
a=a.lstrip('[')
a=a.rstrip(']')
c=[]
b=list(a.split(','))
for i in b:
if i not in c:
c.append(i)
for i in c:
if i!=c[-1]:
print('{} '.format(i),end='')
else:
print(i)
7-8 能被3,5和7整除的数的个数(用集合实现) (30 分)
求指定区间内能被3,5和7整除的数的个数
a,b=input().split()
a,b=int(a),int(b)
#3个集合分别存放被3,5,7整除的数
c1=set()
c2=set()
c3=set()
for i in range(a,b+1):
if i%3==0:
c1.add(i)
if i%5==0:
c2.add(i)
if i%7==0:
c3.add(i)
c=set()
c=c1&c2&c3
print(len(c))
7-9 求矩阵鞍点的个数 (30 分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
n=int(input())
a=[]
for i in range(n):
b=input().split()
a.insert(i,b)
c=[]
d=[]
for i in range(0,n):
maxa=max(int(a[i][j])for j in range(n))
mina=min(int(a[k][i])for k in range(n))
c+=[(i,j)for j in range(n) if int(a[i][j])==maxa]
d+=[(k,i) for k in range(n) if int(a[k][i])==mina]
c=list(set(c)&set(d))
print(len(c))
7-10 两数之和 (30 分)
给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的。找不到则显示 “no answer”。输出的下标按从小到大排序。用一重循环加字典实现。
a=list(map(int,input().strip().split(',')))
b=int(input())
d={}
answer=(0,0)
for x in range(len(a)):
y=b-a[x]
if a[x] in d:
answer=(d[a[x]],x)
else:
d[y]=x
if answer!=(0,0):
print(answer[0],answer[1])
else:
print('no answer')
7-11 字典合并 (40 分)
字典合并。输入用字符串表示两个字典,输出合并后的字典,字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
a=input().strip()
b=input().strip()
a,b=eval(a),eval(b)
c={}
for key,value in a.items():
if key in b:
c[key]=a[key]+b[key]
else:
c[key]=a[key]
for key,value in b.items():
if key in a:
c[key]=a[key]+b[key]
else:
c[key]=b[key]
c1=[i for i in c.keys() if type(i)==int]
c2=[i for i in c.keys() if type(i)==str]
#c1->num c2->str
c1.sort();c2.sort()
d={}
for i in c1:
d[i]=c[i]
for i in c2:
d[i]=c[i]
print('{',end='')
count=0
n=len(d)
for i in d:
count+=1
if type(i)==int:
print('{}:{}'.format(i,d[i]),end='')
elif type(i)==str:
print('"{}":{}'.format(i,d[i]),end='')
if count!=n:
print(',',end='')
print('}',end='')