py brush questions (3)


# 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]))





Published 13 original articles · won 2 · views 231

Guess you like

Origin blog.csdn.net/qq_25871537/article/details/105188826