# 5 - 6
#输入一个列表,去掉列表中重复的数字,按原来次序输出!
"""可以用replace去掉【】"""
lst = input()
lst_ = []
lst = lst.replace("[", "")
lst = lst.replace("]", "")
lst = lst.replace(",", "")
for i in lst:
if i not in lst_:
lst_.append(i)
print(" ".join(lst_))
""" 也可以用eval
lst = eval(input())
lst_ = []
for i in lst:
if i not in lst_:
lst_.append(i)
for j in lst_:
print(j, end=" ")
# 也可以用print(*lst_,sep=' ')
"""
# 5 - 7 未用集合
num1,num2 = map(int,input().split())
ls = [i for i in range(num1,num2+1) if i %3 == 0 and i % 5 == 0 and i % 7 == 0]
print(len(ls))
# 5 - 9 鞍点个数 和前面的一道找鞍点题目类似
n=int(input())
a=[]
for i in range(n):
s=input()
a.append([int(n) for n in s.split()])
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=len(list(set(c)&set(d)))
print(c)
# 5 - 10
l=list(map(int,input().split(',')))
num=int(input())
d={}
for i in l:
d[i]=num-i
for key,value in d.items():
if key in l and value in l:
print(l.index(key),l.index(value))
break
else:
print('no answer')
"""或者这样取字典
s=list(map(int,input().split(",")))
n=int(input())
dic={}
for i in s:
dic[i]=n-i
for i in dic:
if dic[i] in dic:
print("{:} {:}".format(s.index(i),s.index(dic[i])))
break
else:
print("no answer")
"""
# 5 - 11
d1=eval(input())
d2=eval(input())
d3={}
for i in d1:
d3[i]=d1[i]+d2.get(i,0)
for i in d2:
if i not in d3.keys():
d3[i]=d2[i]
d3=dict(sorted(d3.items(),key=lambda x:x[0] if type(x[0])==int else ord(x[0])))
cnt=0
print('{',end='')
for i in d3:
if type(i)==str:
print('"{}":{}'.format(i,d3[i]),end='')
else:
print('{}:{}'.format(i,d3[i]),end='')
cnt+=1
if cnt!=len(d3):
print(',',end='')
print('}',end='')
# 6 - 2
n=int(input())
girl=[]
boy=[]
for i in range(0,n):
sex,name=input().split()
if sex=='0':
girl.append([name,i])
else:
boy.append([name,i])
boy.reverse()
lst=list(zip(girl,boy))
for i in range(0,len(lst)):
lst[i]=sorted(lst[i],key=lambda s:s[1])
lst=sorted(lst,key=lambda s:s[0][1])
for people in lst:
print("{:} {:}".format(people[0][0],people[1][0]))
"""
法二:这个比较好理解
N = int(input())
male = [] # 1代表男生
female = [] # 0代表女生
stu = []
for i in range(N):
temp = input().split()
stu.append(temp[1])
if temp[0] == '0':
female.append(temp[1])
if temp[0] == '1':
male.append(temp[1])
for j in range(len(male)):
if stu[j] in male:
print("{} {}".format(stu[j], female[-1]))
del female[-1]
if stu[j] in female:
print("{} {}".format(stu[j], male[-1]))
del male[-1]
# 其实del可以放在前面改用pop
# print("{} {}".format(stu[j], pop.(male[-1])))
"""
# 6 - 3
def shuttle(lst):
t=[]
for i in lst:
if type(i)==list or type(i)==tuple: # tuple可以换成type((1,)) list可以换成type([])
for j in shuttle(i):
t.append(j)
elif type(i)==type(1):
t.append(i)
return t
lst=eval(input())
print(sum(shuttle(lst)))
# 6 - 4 非递归的方法 将左中括号作为进层的标志,将右中括号作为出层的标志。
a = input()
n = 0
ans = 0
res = a
a = a.replace('[', '')
a = a.replace(']', '')
nums = a.split(',')
b = res
j = 0
for i in range(len(b)):
if b[i] == '[':
n += 1
elif b[i] == ']':
n -= 1
elif b[i] == ',':
continue
elif b[i+1] == ',' or b[i+1] == ']':
ans += int(nums[j]) * n
j += 1
print(ans)
"""递归:
def SUM(lst, level):
s = 0
for i in lst:
if isinstance(i, int) or isinstance(i, float):
s += i * level
elif isinstance(i, list):
s += SUM(i, level + 1)
return s
lst_ = eval(input())
print(SUM(lst_, 1))
"""
# 6 - 5
# 用num记录所在层数,碰到数字并且之后的一位不是数字,sum+num。
a = input()
b = ''.join(a)
num= 0
sum=0
for i in range(0,len(b)):
if(b[i]=='['):
num+=1
elif(b[i]==']'):
num-=1
if b[i].isdigit() and b[i+1].isdigit()==False:
sum = sum+num
print(sum)
"""递归:
def SUM(lst, level):
s = 0
for i in lst:
if isinstance(i, int) or isinstance(i, float):
s += 1 * level
elif isinstance(i, list):
s += SUM(i, level + 1)
return s
lst_ = eval(input())
print(SUM(lst_, 1))
"""
# 6 - 6
a = input()
c = int(input())
b = ''.join(a)
num= 0
sum=0
for i in range(0,len(b)):
if(b[i]=='['):
num+=1
elif(b[i]==']'):
num-=1
if (c == num) and (b[i]!='[') and (b[i]!=']' and b[i]!=',' and b[i+1].isdigit()==False):
sum += 1
print(sum)
"""
递归:
def f(l,deep,num):
s=0
if isinstance(l,int) and deep==num:
s+=1
if isinstance(l,list):
deep+=1
for i in l:
s+=f(i,deep,num)
return s
l=eval(input())
num=int(input())
print(f(l,0,num))
"""
# 6 - 6
n=int(input())
stu=[]
for i in range(n):
stu.append(list(input().split()))
stu=sorted(stu,key=lambda x:int(x[2])+int(x[3])+int(x[4]),reverse=True)
print(stu[0][1],stu[0][0],int(stu[0][2])+int(stu[0][3])+int(stu[0][4]))
"""
students = []
max=0
maxname=""
maxid=""
sum=0
n = int(input())
for i in range(0,n):
t = list(map(str, input().split()))
stuInfo = {}
stuInfo['name'] = t[0]
stuInfo['id'] = t[1]
stuInfo['score1'] = int(t[2])
stuInfo['score2'] = int(t[3])
stuInfo['score3'] = int(t[4])
stuInfo['sum'] = int(t[2])+int(t[3])+int(t[4])
students.append(stuInfo)
for temp in students:
sum=int(temp['sum'])
if sum>max:
max=int(temp['sum'])
maxname=temp['name']
maxid=temp['id']
print('{:s} {:s} {:d}'.format(maxid,maxname,max))
"""
# 6 - 7 输出全排列
# 思路:因为要求n位数的全排列,所以我把这个n位数的每位数都取出来,放到集合中,如果这个集合和数字库集合一样,那么他肯定是全排列的一种。
from math import pow
n=int(input())
start=int(pow(10,n-1))
stop=(n+1)*int(pow(10,n-1))
l=set([str(i) for i in range(1,n+1)]) #数字库
for i in range(start,stop):
i=str(i)
s=set()
for j in i:
s.add(j)
if l==s:
print(int(i))
"""递归:
def Full_Permutation(t):
out = []
if len(t) == 1: # 当只有一个元素的时候排列只有一个,直接返回
return [t]
for j in t:
t_copy = t.copy()
t_copy.remove(j) # 移除元素j,对其余元素全排递归
out += [[j] + k for k in Full_Permutation(t_copy)]
return out
t_ = [i for i in range(1, int(input()) + 1)] # 生成前n位数
res = Full_Permutation(t_)
for m in res:
print("".join([str(n) for n in m]))
"""
# 7 - 1 词频分析
import re
import collections # 常用于统计词频
import sys
words = "".join([line for line in sys.stdin])
words = re.compile(r"\w+", re.I).findall(words.lower().split('#')[0])
words = [each.strip() for each in words]
words = list(map(lambda each: each[0:15] if len(each) > 15 else each, words))
counter = collections.Counter(words)
rank = sorted(counter.items(), key=lambda each: (-each[1], each[0]), reverse=False)
print(len(rank))
for each in rank[0:int(0.1*len(rank))]:
print("{}:{}".format(each[1], each[0]))
py刷题(三)
最新推荐文章于 2023-10-09 13:11:00 发布