• 牛客网语法篇练习复合类型(一)


    1.试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
    例如,在1到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。

    1. n,x =list(map(int,input().split()))
    2. s = ''.join(str(i) for i in range(1,n+1))
    3. print(s.count(str(x)))

    2.输入10个整数,要求按输入时的逆序把这10个数打印出来。
       逆序输出,就是按照输入相反的顺序打印这10个数。

    1. num = input().split()
    2. print(' '.join( num[::-1]))

    3.输入数字N,然后输入N个数,计算这N个数和。

    1. n = int(input())
    2. s = list(map(int,input().split()))
    3. print(sum(s))

    4.输入n个成绩,换行输出n个成绩中最高分数和最低分数的差。

    1. n=int(input())
    2. b=list(map(int,input().split()))
    3. print(max(b)-min(b))

    5.期中考试开始了,大家都想取得好成绩,争夺前五名。
    从键盘输入 n 个学生成绩,输出每组排在前五高的成绩。

    1. a=int(input())
    2. b=list(map(int,input().split(" ")))
    3. c=sorted(b,reverse=True)
    4. d=' '.join(map(str,c[0:5]))
    5. print(d)

    6.输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

    1. n,m =map(int,input().split())
    2. a,b = [], []
    3. a = list(map(int,input().split()))
    4. b = list(map(int,input().split()))
    5. a.extend(b)
    6. a.sort()
    7. print(*list(a))

    7.输入一个整数序列,判断是否是有序序列,
    即序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。

    1. n = int(input())
    2. a = list(map(int, input().split()))
    3. b = sorted(a)
    4. c = sorted(a, reverse=True)
    5. if a == b or a == c:
    6. print('sorted')
    7. else:
    8. print('unsorted')

    8.有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,
    保证插入新数后,序列仍然是升序。

    1. n = int(input())
    2. l = list(map(int,input().split()))
    3. l.append(int(input()))
    4. l.sort()
    5. c= map(str,l)
    6. print(" ".join(c))

    9.有一个整数序列(可能有重复的整数),现删除指定的某一个整数,
    输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

    1. n = input()
    2. data = list(input().strip().split())
    3. x = input()
    4. while data.count(x):
    5. data.remove(x)
    6. for i in data:
    7. print(i,end=" ")

    10.输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,
    是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。

    1. num=int(input())
    2. lis=list(map(int,input().split(" ")))
    3. new_lis=list(set(lis))
    4. new_lis.sort(key=lis.index)
    5. print(" ".join(map(str,new_lis)))

    11.给定n个整数和一个整数x,小乐乐想从n个整数中判断x出现几次,请编程帮他实现。

    1. n=int(input())
    2. a=list(map(int,input().split(' ')))
    3. f=int(input())
    4. res=a.count(f)
    5. print(res)

    12.用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

    1. def prime(n):
    2. a = []
    3. m = list(range(2, n+1))
    4. a = m
    5. count = 0
    6. for i in m:
    7. for j in a:
    8. if j%i==0 and j!=i:
    9. m.remove(j)
    10. count +=1
    11. print(*m)
    12. print(count)
    13. while True:
    14. try:
    15. n = int(input())
    16. prime(n)
    17. except:
    18. break

    13.输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分。

    1. li =[]
    2. for i in range(5):
    3. li.append(list(map(float,input().split())))
    4. for i in li:
    5. print('%.1f %.1f %.1f %.1f %.1f %.1f'%(i[0],i[1],i[2],i[3],i[4],sum(i)))

    14.KiKi得到了一个n行m列的矩阵,现在他想知道第x行第y列值是多少,请帮助他完成这个任务。

    1. n,m=map(int,input().split())
    2. m=[]
    3. for i in range(n):
    4. a=list(input().split(' '))
    5. m.append(a)
    6. x,y=map(int,input().split())
    7. print(m[x-1][y-1])

    15.KiKi想从n行m列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。

    1. n,m=map(int,input().split(" "))
    2. lis=[list(map(int,input().split(" "))) for i in range(0,n)]
    3. a=[]
    4. for i in range(0,n):
    5. a.append(max(lis[i]))
    6. max_num=max(a)
    7. x=a.index(max_num)
    8. y=lis[x].index(max_num)
    9. print(x+1,y+1)

    16.KiKi得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。
    (当两个矩阵对应数组元素都相等时两个矩阵相等)。

    1. n, m = map(int, input().split())
    2. l = [[] * n for _ in range(n)]
    3. for i in range(n):
    4. l[i] = list(map(int, input().split()))
    5. l_list = l.copy()
    6. for i in range(n):
    7. l[i] = list(map(int, input().split()))
    8. l2_list = l.copy()
    9. if l_list == l2_list:
    10. print('Yes')
    11. else:
    12. print('No')

      17.输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。

    1. a,b = map(int,input().split())
    2. list1 = []
    3. sum = 0
    4. for i in range(a):
    5. list1.extend(list(map(int,input().split())))
    6. for i in list1:
    7. if i>0:
    8. sum+=i
    9. print(sum)

    18.给你一个整数n,按要求输出n∗n的回型矩阵。

    1. n = int(input())
    2. a = [[0] * n for i in range(n)]
    3. p = 0
    4. q = n - 1
    5. t = 1
    6. while p < q:
    7. for i in range(p, q):
    8. a[p][i] = t
    9. t += 1
    10. for i in range(p, q):
    11. a[i][q] = t
    12. t += 1
    13. for i in range(q, p, -1):
    14. a[q][i] = t
    15. t += 1
    16. for i in range(q, p, -1):
    17. a[i][p] = t
    18. t += 1
    19. p += 1
    20. q -= 1
    21. if p == q:
    22. a[p][q] = t
    23. for i in range(n):
    24. print(*a[i])

    19.给你一个整数n,输出n∗n的蛇形矩阵。

    1. n = int(input())
    2. lis = [[1]]
    3. a = 0
    4. b = 0
    5. index = 1
    6. for i in range(n-1):
    7. lis.append([])
    8. #print(lis)
    9. tem = 2
    10. if n > 1:
    11. while(tem <= n**2):
    12. if (a == 0 and index == 1):
    13. b = b + 1
    14. index = -1
    15. elif (b == 0 and index == -1):
    16. a = a + 1
    17. index = 1
    18. else:
    19. a = a - index
    20. b = b + index
    21. if (a < n and b < n):
    22. lis[a].append(tem)
    23. tem += 1
    24. for i in range(n):
    25. print(*lis[i])

    20.给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。
     

    1. a,b = map(int,input().split(' '))
    2. m = []
    3. n = []
    4. for i in range(a):
    5. m.append(list(map(int,input().split())))
    6. for i in range(a):
    7. n.append(list(map(int,input().split())))
    8. count=0
    9. for i in range(a):
    10. for j in range(b):
    11. if m[i][j]==n[i][j]:
    12. count+=1
    13. print('%.2f'%(count*100/(a*b)))

    21.KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

    1. n=int(input())
    2. a=[]
    3. sumall=0
    4. for i in range(n):
    5. raw=list(map(int,input().split()))
    6. a.append(raw)
    7. for i in range(n):
    8. for j in range(n):
    9. if i>j:
    10. sumall=sumall+a[i][j]
    11. if (sumall)==0:
    12. print('YES')
    13. else:
    14. print('NO')

    22.KiKi现在得到一个包含n*m个数的整数序列,现在他需要把这n*m个数按顺序规划成一个n行m列的矩阵并输出,请你帮他完成这个任务。

    1. a,b=map(int, input().split())
    2. nlist=list(map(int, input().split()))
    3. for i in range(a):
    4. for j in range(b):
    5. print(nlist[j+i*b],end=" ")
    6. print()

    23.KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

    1. n,m=map(int, input().split())
    2. lis = [list(map(int,input().split())) for i in range(0,n)]
    3. for i in range(0,m):
    4. for j in range(0,n):
    5. print(lis[j][i],end=' ')
    6. print()

    24.KiKi有一个矩阵,他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。

    1. n,m=list(map(int,input().split()))
    2. a=[]
    3. for i in range(n):
    4. a.append(list(map(int,input().split())))
    5. t=int(input())
    6. for j in range(t):
    7. r,v1,v2=input().split()
    8. r,v1,v2=str(r),int(v1),int(v2)
    9. if r=='r':
    10. a[v1-1],a[v2-1]=a[v2-1],a[v1-1]
    11. elif r=='c':
    12. for i in range(n):
    13. a[i][v1-1],a[i][v2-1]=a[i][v2-1],a[i][v1-1]
    14. for i in range(n):
    15. for j in range(m):
    16. print(a[i][j],end=' ')
    17. print()

    25.KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。

    1. n=int(input())
    2. s = [[0]*i for i in range(1, 31)]
    3. for i in range(30):
    4. for j in range(i+1):
    5. if j==0 or i==j:
    6. s[i][j]=1
    7. else:
    8. s[i][j]=s[i-1][j-1]+s[i-1][j]
    9. s1=s[:n]
    10. for i in range(len(s1)):
    11. for j in range(len(s1[i])):
    12. c=str(s[i][j])
    13. print(' '*(5-len(c))+c,end='')
    14. print('')

    26.KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。

    1. n=input().split()
    2. m=input().split()
    3. j=input().split()
    4. if n[0]==m[1]==j[2]=='K' or n[2]==m[1]==j[0]=='K':
    5. print('KiKi wins!')
    6. elif n[0]==m[1]==j[2]=='B' or n[2]==m[1]==j[0]=='B':
    7. print('BoBo wins!')
    8. elif n[0]==n[1]==n[2]=='K' or m[0]==m[1]==m[2]=='K' or
    9. j[0]==j[1]==j[2]=='K' or n[0]==m[0]==j[0]=='K' or
    10. n[1]==m[1]==j[1]=='K' or n[2]==m[2]==j[2]=='K':
    11. print('KiKi wins!')
    12. elif n[0]==n[1]==n[2]=='B' or m[0]==m[1]==m[2]=='B' or
    13. j[0]==j[1]==j[2]=='B' or n[0]==m[0]==j[0]=='B' or
    14. n[1]==m[1]==j[1]=='B' or n[2]==m[2]==j[2]=='B':
    15. print('BoBo wins!')
    16. else:
    17. print('No winner!')

    27.小sun上课的时候非常喜欢玩扫雷。他现小sun有一个初始的雷矩阵,他希望你帮他生成一个扫雷矩阵。

    1. n,m=list(map(int,input().split()))
    2. a=[['-' for i in range(m+2)]]
    3. for i in range(n):
    4. b=list('-'+input()+'-')
    5. a.append(b)
    6. a.append(['-' for i in range(m+2)])
    7. for i in range(1,n+1):
    8. for j in range(1,m+1):
    9. if a[i][j]!='*':
    10. s=0
    11. if a[i-1][j]=='*':
    12. s=s+1
    13. if a[i-1][j-1]=='*':
    14. s=s+1
    15. if a[i-1][j+1]=='*':
    16. s=s+1
    17. if a[i][j-1]=='*':
    18. s=s+1
    19. if a[i][j+1]=='*':
    20. s=s+1
    21. if a[i+1][j]=='*':
    22. s=s+1
    23. if a[i+1][j-1]=='*':
    24. s=s+1
    25. if a[i+1][j+1]=='*':
    26. s=s+1
    27. a[i][j]=s
    28. for i in a[1:-1]:
    29. print(''.join(str(j) for j in i[1:-1]))

    28.凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?
    注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时,空格和换行符不计算在内。

    print(len(input().replace(' ','').replace('\n','')))

    29.有个软件系统登录的用户名和密码为(用户名:admin,密码:admin),用户输入用户名和密码,判断是否登录成功。

    1. a,b = input().split()
    2. if a=='admin' and b=='admin':
    3. print("Login Success!")
    4. else:
    5. print("Login Fail!")

    30.笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

    1. import math
    2. def zishu(n):
    3. if n<=1:
    4. return False
    5. for i in range(2,int(math.sqrt(n)+1)):
    6. if n%i==0:
    7. return False
    8. else:
    9. return True
    10. word=input()
    11. arr=[0 for i in range(26)]
    12. for c in word:
    13. arr[ord(c)-97]+=1
    14. arr.sort()
    15. minx=0
    16. for x in arr:
    17. if x>0:
    18. minx=x
    19. break
    20. res=arr[-1]-minx
    21. if zishu(res):
    22. print('Lucky Word')
    23. print(res)
    24. else:
    25. print('No Answer')
    26. print(0)

    31.对于一个较大的整数 N(1<=N<=2,000,000,000)比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮她完成这件事情

    1. n=list(input())
    2. i=3
    3. while i <len(n):
    4. n.insert(-i,",")
    5. i=i+4
    6. b="".join(n)
    7. print(b)

    32.假设你们社团要竞选社长,有两名候选人分别是A和B,社团每名同学必须并且只能投一票,最终得票多的人为社长。

    1. s = input()
    2. a = s.count('A')
    3. b = s.count('B')
    4. if a > b:
    5. print('A')
    6. elif a < b:
    7. print('B')
    8. else:
    9. print('E')

    33.给定长度为n的只有小写字母的字符串s,进行m次操作,每次将[l,r]范围内所有c1字符改成c2,输出操作完的字符串。

    1. m, n = map(int, input().split())
    2. str_use = list(input())
    3. for j in range(n):
    4. a, b, c, d = input().split()
    5. for j in range(int(a)-1,int(b)):
    6. if str_use[j]==c:
    7. str_use[j]=d
    8. print(''.join(str_use))

    34.规定一种对于复合词的简写方式为只保留每个组成单词的首字母,并将首字母大写后再连接在一起比如 “College English Test”可以简写成“CET”,“Computer Science”可以简写为“CS”,“I am Bob”简写为“IAB”输入一个长复合词(组成单词数 sum,sum≥1且sum≤100,每个单词长度len,len,len≥1且len≤50),请你输出它的简写。

    1. n=input().split()
    2. for i in n:
    3. print(i[0].upper(),end='')


  • 相关阅读:
    深入浅出学习透析Nginx服务器的基本原理和配置指南「进阶实践篇」
    6.3 ASP.NET Core Web API技术选择
    浅谈 Class.forName() 的用法
    9.java项目-尚医通(9)
    关于#javascript#的问题:页面提交数据时,如何将提交的数据与bootstrapTable中的数据做比较,判断是否有重复提交的数据,如果有数据重复则弹窗提醒
    基于Python实现的遗传算法求TSP问题
    挖矿僵尸网络蠕虫病毒kdevtmpfsi处理过程(包含部分pgsql线程池满的情况)
    java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2
    SATA系列专题之三:3.4 Transport Layer传输层Error处理机制解析
    JDBC的使用
  • 原文地址:https://blog.csdn.net/u013157570/article/details/127989173