SDUT-python实验四编程题
7-1 sdut-ASCII码排序输入N个字符后按各字符的ASCII码从小到大的顺序输出这N个字符。输入格式:输入数据有多组每组占一行有N个字符组成。输出格式:对于每组输入数据输出一行字符中间用一个空格分开。输入样例:Input1231qwe1321asddsfadsfadsfzxc1321132dsfaabcABCDFdefgDEFGHIJhijakfdsadsf;dsa输出样例:1 1 2 3 I n p t u1 1 2 3 e q wa a a d d d d f f f s s s s1 1 1 2 2 3 3 a c d f s x z; A B C D D E F F G H I J a a a a b c d d d d e f f f g h i j k s s s答案while True: try: sinput() # sort()只能对列表list使用改变原列表 # 但sorted可适用于任何迭代对象不改变原列表 new_ssorted(s) # 解包操作使每个元素间有一个空格 print(*new_s) except: break7-2 sdut-数据逆序一行输入N个整数按逆序输出数值。输入格式:输入有多行。每行有若干个整数用空格分隔。输出格式:对于每行输入将数值逆序输出数值以空格隔开。输入样例:1 3 5 9 7 6 8 2 4 0 234 656 22231 2 3 4 5 6 7 8 9 10 11 12 13 14 15-3 -43 23 435 -5667 231 100 2002 2035输出样例:在这里给出相应的输出。例如2223 656 234 0 4 2 8 6 7 9 5 3 115 14 13 12 11 10 9 8 7 6 5 4 3 2 12035 2002 100 231 -5667 435 23 -43 -3答案while True: try: lslist(map(int,input().split())) # 直接逆序 new_lsls[::-1] print(*new_ls) except: break7-4 sdut-统计身高超过平均值的学生中小学生每个学期都要体检量身高因为身高可以反映孩子的生长状况。现在一个班的身高已经量好了请输出其中超过平均身高的那些学生的身高。输入格式:输入为一行数据以空格分隔每个数据都是一个正整数。输出格式:输出超过身高平均数的学生的身高数值每个数后面有一个空格。输出的顺序和输入的相同。输入样例:143 174 119 127 117 164 110 128输出样例:在这里给出相应的输出。例如143 174 164答案lslist(map(int,input().split())) sum0 # i表示列表ls内的每个元素 for i in ls: # 记得转换为int形式 sumint(i) avesum/len(ls) for i in ls: if iave: print(i,end )7-5 sdut-求整数的位数及各位数字之和对于给定的正整数N求它的位数及其各位数字之和。(用Python实现提示把整数转换成字符串列表用sum和len函数)输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出N的位数及其各位数字之和中间用一个空格隔开。输入样例:456输出样例:3 15答案# 输入的n设为字符串格式就可以直接转换成列表list啦 # len函数只能用于字符串 列表 元祖等不可用于整数所以要把n转换成字符串形式 ninput() lslist(n) n1len(ls) sum0 for i in ls: # 记得把ls内的每个元素转换成int sumint(i) print(%d %d%(n1,sum))7-6 sdut-字母替换编写程序将输入字符串中的大写英文字母按以下对应规则替换其他字符不变。(Python实现提示转换表用元组实现原字母 对应字母A ZB YC XD W... ...X CY BZ A输入格式:在一行中输入字符串。输出格式:在一行中给出替换完成后的字符串。输入样例:This is a pen.输出样例:在这里给出相应的输出。例如Ghis is a pen.答案sinput() # 存放替换完成后的字符串 new_s lslist(s) for i in ls: # 如果i是大写字母就要进行替换 if i.isupper(): # ord得到该字符的ASCII码值 # chr将计算结果转换回对应的字符 new_schr(155-ord(i)) # 如果i是大写字母就直接加入 else: new_si print(new_s)7-7 sdut-输出字母在字符串中位置索引输入一个字符串再输入两个字符求这两个字符在字符串中的索引。输入格式:第一行输入字符串第二行输入两个字符用空格分开。输出格式:从右向左输出字符和索引中间有一个空格。下标最大的字符最先输出。每行一个。输入样例:pmispsissippis p输出样例:11 p10 p8 s7 s5 s4 p3 s0 p答案sinput() a,binput().split() # 从右-左遍历 # len(s)-1得到最后字母的索引位置 # 第一个-1是指循环的结束条件是i-1即一直遍历到i0 # 第二个-1的意思是每次循环-1实现从右到左的倒序遍历 for i in range(len(s)-1,-1,-1): if s[i]a or s[i]b: print(i,s[i])7-8 sdut- 输出10个不重复的英文字母输入一个字符串把最左边的10个不重复的英文字母不区分大小写挑选出来进行输出如没有10个英文字母显示信息“not found”。输入格式:在一行中输入字符串。输出格式:在一行中输出最左边的10个不重复的英文字母或者显示信息“not found输入样例1:poemp134567输出样例1:not found输入样例2:This 156is a test example输出样例2:Thisaexmpl答案sinput() # 存放输出的十个字母如果有的话 s1 # 计算已存放在s1中的字母数量 cnt0 for i in range(len(s)): # 如果i是字母 if s[i].isalpha(): # 如果cnt10且i未重复(可保证cnt里只有10个字母) if cnt10 and s[i].upper() not in s1 and s[i].lower() not in s1: s1s[i] cnt1 if cnt10: print(not found) else: print(s1)7-9 sdut-判断两个字符串是否为变位词如果一个字符串是另一个字符串的重新排列组合那么这两个字符串互为变位词。比如heart 与 earth 互为变位词Mary 与 arMy 也互为变位词。“Hello world与“worldHello不是变位词。输入格式:第一行输入第一个字符串第二行输入第二个字符串。输出格式:若是变位词输出yes否则输出no。输入样例1:MaryarMy输出样例1:yes输入样例2:hello worldworld hello输出样例2:yes输入样例3:I am very good.verygood I am.输出样例3:no答案s1input() s2input() if sorted(s1)sorted(s2): print(yes) else: print(no)7-10 sdut-猴子选大王一群猴子要选新猴王。新猴王的选择方法是让N只候选猴子围成一圈从某位置起顺序编号为1~N号。从第1号开始报数每轮从1报到3凡报到3的猴子即退出圈子接着又从紧邻的下一只猴子开始同样的报数。如此不断循环最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王输入格式:在一行中给一个正整数N≤1000。输出格式:在一行中输出当选猴王的编号。输入样例:11输出样例:在这里给出相应的输出。例如7答案# 一个典型的约瑟夫环问题~ # 接下来是约瑟夫环的数学解法 nint(input()) # 从0开始标下标 # 如果只有一只猴子猴王下标就是0后续1就是编号了 p0 # i为当前的猴子数从2-n # ix时就是在计算x只猴子时的胜利者编号。而只有i2时才需要计算 # 当有一只猴子时直接就当猴王了 for i in range(2,n1): p(p3)%i # 将下标转换为编号 print(p1)7-11 sdut-找出两组数据中非公共元素给定两行输入每行代表一组元素。求两组中非公共的元素。输入格式:在两行中给出两组元素每行的元素间用空格分开。在一行中元素可能会有重复值。输出格式:在一行中按照元素的输入顺序输出不是两组共有的元素以空格分隔。题目保证至少存在一个这样的元素输入样例:10 3 -5 2 8 0 5 -15 9 10010 6 4 8 2 -5 9 0 100 1输出样例:在这里给出相应的输出。例如3 5 -15 6 4 1答案# 输入的元素不一定是数字 # 故输入应按字符串直接比较 s1input() s2input() # 将字符串s1、s2分割成多个子字符串并返回一个列表 ls1s1.split() ls2s2.split() # 存放非公共元素 ls3[] # 字符串列表也可以直接用for循环 for i in ls1: if i not in ls2: # append是列表list的方法用于在列表的末尾添加一个新元素 ls3.append(i) for i in ls2: if i not in ls1: ls3.append(i) print(*ls3)7-13 sdut-矩阵行、列、对角线和的最大值求一个3*3矩阵每行、每列及对角线和的最大值。输入格式:在一行输入9个整数。输出格式:在一行输出每行、每列及对角线和的最大值。输入样例:3 6 5 9 8 2 1 4 5输出样例:19答案# 虽然笨但有用。 lslist(map(int,input().split())) h1ls[0]ls[1]ls[2] h2ls[3]ls[4]ls[5] h3ls[6]ls[7]ls[8] l1ls[0]ls[3]ls[6] l2ls[1]ls[4]ls[7] l3ls[2]ls[5]ls[8] d1ls[0]ls[4]ls[8] d2ls[2]ls[4]ls[6] nummax(h1,h2,h3,l1,l2,l3,d1,d2) print(num)7-15 sdut-打印显示直角字母图形给定行数输出指定行数的字母组成的图形。输入格式:在一行内给出行数n1n10。输出格式:输出由大小字母组成的直角图形。输入样例1:2输出样例1:AAB输入样例2:7输出样例2:AABABCABCDABCDEABCDEFABCDEFG答案nint(input()) sABCDEFGHIJ # 遍历行数 for i in range(n): # 每行有i个字母 # i是0-n-1,所以下面j需要是i1即1-n for j in range(i1): # 同一行间的字母不需要以空格相隔 print(s[j],end) # 换行 print()7-17 sdut-array2-5 打印“杨辉三角“ 品中国数学史 增民族自豪感2背景介绍北宋人贾宪约1050年首先使用“贾宪三角”进行高次开方运算。南宋数学家杨辉在《详解九章算法》1261年记载并保存了“贾宪三角”故称杨辉三角。杨辉三角是中国数学史上的一个伟大成就。杨辉三角是中国古代数学的杰出研究成果之一它把二项式系数图形化把组合数内在的一些代数性质直观地从图形中体现出来是一种离散型的数与形的结合。中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲帕斯卡1623----1662在1654年发现这一规律所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年比贾宪迟600年。杨辉三角数字的特点为1在三角形的首列和对角线上数值均为12其余数据为每个数字等于上一行的左右两个数字之和第n1行的第i个数等于第n行的第i-1个数和第i个数之和用公式表示为 C(n1,i)C(n,i)C(n,i-1)。图示为杨辉三角的应用(ab)的n次方展开式中的各项系数依次对应杨辉三角的第(n1)行中的每一项。输入格式:欲打印杨辉三角的行数n1n13)。输出格式:1输出的数据为等腰三角形样式2每个数字占据4个字符的位置数字左对齐数字不足4位的右边留出空格3最后一行的数值“1”顶格前面无空格。提示以n5分析行首空格数为输入样例1:5输出样例:11 11 2 11 3 3 11 4 6 4 1输入样例2:6输出样例:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1答案nint(input()) # 存放杨辉三角的每一行 # 第一行一定有一个1 ls[ [1] ] # 从第二行(索引1)开始 for i in range(1,n): # 每一行开头都是一个1 row[1] # 从第1列到第i-1列,不包括每一行的最后一个数 for j in range(1,i): # 杨辉三角的递推公式当前行第j个数 上一行第j-1个数 上一行第j个数 # ls[i-1]为当前行的上一行索引从0开始要对应好 row.append( ls[i-1][j]ls[i-1][j-1] ) # 每一行末尾也是1 row.append(1) # 将每一行都添加到ls内 ls.append(row) # c为每一行前面的空格数 cn*2-2 # 逐行打印 for i in range(n): # 在开始打印每行数字前要先打印c个空格 print( *c,end) # 遍历该行的每个数字并格式化打印以实现左对齐 # 第0行有1个数字第1行有两个..以此类推故用i1 for j in range(i1): # end实现不换行 print(%-4d%ls[i][j],end) # 打印完一行换行 print() # 每往下一行每行前面的空格数-2 c-27-18 sdut-列表去重输入一个列表去掉列表中重复的数字按原来次序输出输入格式:在一行中输入列表。输出格式:在一行中输出不重复的列表元素。输入样例1:[4,7,5,6,8,6,9,5]输出样例1:4 7 5 6 8 9输入样例2:[1,2,3,abcd,hello,1,2,3,4,5,6]输出样例2:1 2 3 abcd hello 4 5 6答案# eval()函数将输入的列表样式的字符串转换成世纪的列表 seval(input()) # 准备输出的去重后的列表 # set()set为集合元素唯一可自动去重 # set集合无序题目要求按原次序输出需要指定排序 # 排序依据keys.index-以元素在s中第一次出现的索引位置排序 lssorted(set(s),keys.index) # 将列表解包并设置列表内元素以空格分隔 print(*ls,sep )7-19 sdut-期末考试之排名次期末考试结束了童鞋们的成绩也出来的了可是为了排名次可忙坏了老师因为学生太多了。这时老师把这个任务交给了你希望你能帮老师完成。作为IT人你当然不能用笨笨的人工方法了编程解决才是好办法。共有三门课语文、数学和英语要求根据学生的各科成绩计算出其总成绩并根据总成绩从高到低排序.输入格式:第一行一个整数NN100代表学生的人数。接下来的N行数据每行有三个整数C,M,E分别代表一个学生语文、数学和英语的成绩.输出格式:一共N行每行一个数从大到小分别代表各个学生的总成绩.输入样例:370 80 9059 59 59100 100 100输出样例:300240177答案nint(input()) # 存放学生的总成绩 ls[] for i in range(n): c,m,emap(int,input().split()) scorecme ls.append(score) # 逆序排序(从大到小) ls.sort(reverseTrue) # 由于要求每个元素占一行直接用for循环 for i in ls: print(i)7-20 sdut- 矩阵转置(II)从键盘输入一个m(2m6)*n(2n6)阶的矩阵编程输出它的转置矩阵。输入格式:在第一行输入矩阵的行数m和列数n的值;在第二行按照矩阵格式输入矩阵的数据同行数据之间用空格隔开。输出格式:矩阵格式输出同行数据之间用一个空格隔开。输入样例:3 51 2 3 4 51 2 3 4 51 2 3 4 5输出样例:1 1 12 2 23 3 34 4 45 5 5答案m,nmap(int,input().split()) # 保存原矩阵 a[] for i in range(m): # list将map的结果转换成真正的列表 rowlist( map(int,input().split())) a.append(row) #转置矩阵 for i in range(n): # 原矩阵的行 for j in range(m): # 原矩阵的列 # 输出元素注意是a[j][i] print(a[j][i],end) # 如果当前元素不是转置矩阵此行最后一个元素要加空格 if j!m-1: print( ,end) # 转置矩阵一行输出结束换行 print()7-23 sdut-对称矩阵的判定分数 10作者 周雪芹单位 山东理工大学输入矩阵的行数再依次输入矩阵的每行元素判断该矩阵是否为对称矩阵若矩阵对称输出“yes”不对称输出“no”。输入格式:输入有多组每一组第一行输入一个正整数NN20表示矩阵的行数若N0表示输入结束。下面依次输入N行数据。输出格式:若矩阵对称输出“yes不对称输出“no”。输入样例:36 3 123 18 812 8 736 9 123 5 812 6 30输出样例:yesno答案while True: nint(input()) if n0: break else: a[] for i in range (n): rowlist( map(int,input().split()) ) a.append(row) # 先假设对称 flagTrue for i in range(n): for j in range(n): # 如果有不对称情况更改flag if a[i][j]!a[j][i]: flagFalse # 如果有不对称提前结束外层循环 # 如果在内循环判断则只结束内循环 而不结束外循环浪费时间 if not flag: break if flag: print(yes) else: print(no)7-18 sdut-查验身份证一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下首先对前17位数字加权求和权重分配为{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}然后将计算的和对11取模得到值Z最后按照以下关系对应Z值与校验码M的值Z0 1 2 3 4 5 6 7 8 9 10M1 0 X 9 8 7 6 5 4 3 2现在给定一些身份证号码请你验证校验码的有效性并输出有问题的号码。验证身份证合法性的规则1前17位是否全为数字2最后1位校验码计算准确。输入格式:输入第一行给出正整数N≤100表示输入的身份证号码的个数。随后N行每行给出1个18位身份证号码。输出格式:按照输入的顺序每行输出1个有问题的身份证号码。如果所有号码都正常则输出All passed。输入样例1:432012419880824005612010X19890101123411010819671130186637070419881216001X输出样例1:12010X19890101123411010819671130186637070419881216001X输入样例2:2320124198808240056110108196711301862输出样例2:All passed答案#定义权重分配 weights[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] # 定义检验码M M[1,0,X,9,8,7,6,5,4,3,2] nint(input()) cnt0 # 记录合法的身份证数量 for i in range(n): sum0 sinput() # 检验前17位是否全为数字 # [:-1]表示从开始到倒数第一个不包括倒数第一个 # [开始位置:结束位置:步长] if s[:-1].isdigit(): # s是字符串要进行数学计算则需要转换成列表 # map将字符串中的每个字符转换为整数 lslist( map(int,s[:-1]) ) # 计算加权和 for i in range(len(ls)): sumweights[i]*ls[i] # 计算Z值 sumsum%11 # 检验校正码M # s[-1]是身份证最后一位负索引是字符串所以M也需要转换成str if str(M[sum])!s[-1]: print(s) else: cnt1 else: print(s) if cntn: print(All passed)7-19 sdut-统计两个字符串中相同的字符个数输入字符串A、字符串B求在字符串A、字符串B中相同的字符个数。输入格式:第一行输入表示字符串A。第二行输入表示字符串B。输出格式:在一行内输出字符串A、B中相同字符的个数。输入样例:AEIOUHELLO World!输出样例:在这里给出相应的输出。例如2答案s1input() s2input() cnt0 # set可以去重 for i in set(s1): if i in set(s2): cnt1 print(cnt)7-20 sdut-分析每队活动投票情况利用集合分析活动投票情况。第一小队有五名队员序号是1,2,3,4,5; 第二小队也有五名队员序号6,7,8,9,10。输入一个得票队员的编号的字符串求第一、二小队没有得票的队员。在一行中输入得票的队员的序列号用逗号隔开。输入格式:在一行中输入得票的队员的序列号用逗号隔开。输出格式:在第一行中输出第一小队没有得票的队员序号用空格分开在第二行中输出第二小队没有得票的队员序号用空格分开。输入样例:1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9输出样例:26 8答案# 读取输入的字符串并转换成整数列表 lslist( map(int,input().split(,)) ) # 创建两个空列表储存没有得票的队员 one[] two[] for i in range(1,6): if i not in ls: one.append(i) # 对one解包使其由打印“one]0],one[1],...转换为打印one[0] one[1]... # sep设定分隔符 print(*one,sep ) for i in range(6,11): if i not in ls: two.append(i) print(*two,sep )7-21 sdut-统计字符在字符串中出现的次数统计并输出某给定字符在给定字符串中出现的次数。输入格式:第一行给出一个以回车结束的字符串一行少于80个字符第二行输入一个字符。输出格式:在一行中输出给定字符在给定字符串中出现的次数。如果未出现则输出0输入样例:programming is More fun!m输出样例:2答案#很简单没什么好解释的。 sinput() xinput() print(s.count(x))7-22 sdut-四则运算用字典实现根据输入信息进行四则运算用字典实现。与c语言的switch语句相比较。输入格式:第1行中输入一个数字a第2行中输入一个四则运算符( , - , * , / )op在第3行中输入一个数字b。输出格式:在一行中输出 a op b 的运算结果保留2位小数。输入样例1:7/3输出样例1:2.33输入样例2:10/0输出样例2:divided by zero答案# 也没啥好说的。 aint(input()) opinput() bint(input()) if op: print(%.2f%(ab)) elif op-: print(%.2f%(a-b)) elif op*: print(%.2f%(a*b)) else: if b0: print(divided by zero) else: print(%.2f%(a/b))7-23 sdut-统计工龄给定公司N名员工的工龄按工龄增序输出每个工龄段有多少员工。输入格式:首先给出正整数N≤105 即员工总人数随后给出N个整数即每个员工的工龄范围在[0, 50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数格式为“工龄:人数”。每项占一行。输入样例:810 2 0 5 7 2 5 2输出样例:在这里给出相应的输出。例如0:12:35:27:110:1答案nint(input()) ageslist( map(int,input().split()) ) # [0]表示此列表内只有一个元素0 # *51:工龄范围在0-50故有51个 count[0]*51 for i in ages: count[i]1 for i in range(51): if count[i]1: print(%d:%d%(i,count[i]))7-24 sdut-字典合并输入用字符串表示两个字典输出合并后的字典。字典的键用一个字母或数字表示。注意1和‘1’是不同的关键字输入格式:在第一行中输入第一个字典字符串在第二行中输入第二个字典字符串。输出格式:在一行中输出合并的字典输出按字典序。1 的 ASCII 码为 49大于 1排序时 1 在前1 在后。其它的字符同理。输入样例1:{1:3,2:5}{1:5,3:7}输出样例1:1:82:53:7输入样例2:{1:3,1:4}{a:5,1:6}输出样例2:1:41:9a:5答案# eval()将字符串转换为python字典 # dict确保是字典类型 d1dict(eval(input())) d2dict(eval(input())) # 存放d1和d2合并后的所有键 l1[] for i in d1: if i in d2: # 相同键的值直接相加 d2[i]d1[i] else: # 不同键的直接添加 d2[i]d1[i] for i in d2: l1.append(i) # 存放l去重后的所有键 l2list(set(l1)) # 保存所有字符串键如[1, a] l3[] # 保存转换后的键值 l4[] for i in l2: # 如果i是字符串 if isinstance(i,str): # 保存字符串键本身 l3.append(i) # 保存字符串的ASCII码 l4.append(ord(i)) else:# 如果是数值键直接保存 l4.append(i) # 创建要输出的那个字典 d3{} for i in d2: if isinstance(i,str): # 如果是字符串键需将其转换为ACSII码作为新键 d3[ord(i)]d2[i] else: d3[i]d2[i] # l4中保存的是统一的键值字符串为ACSII码 for i in sorted(l4): if chr(i) not in l3: # 如果chr(i)不在l3(保存着所有原始字符串键)中将ACSII码转换回字符 print(%s:%s% (i,d3[i])) else: print(%s:%s% (chr(i),d3[i]))7-25 sdut-集合相等问题给定2 个集合S和T试设计一个判定S和T是否相等的蒙特卡罗算法。设计一个拉斯维加斯算法对于给定的集合S和T判定其是否相等。输入格式:输入数据的第一行有1 个正整数nn≤10000表示集合的大小。接下来的2行每行有n个正整数分别表示集合S和T中的元素。输出格式:将计算结论输出。集合S和T相等则输出YES否则输出NO。输入样例:32 3 77 2 3输出样例:YES答案# 也也没啥好说的。 nint(input()) l1list( map(int,input().split()) ) l2list( map(int,input().split()) ) flagTrue for i in l1: if i not in l2: flagFalse if not flag: print(NO) else: print(YES)7-26 sdut-植物与颜色请定义具有red, orange, yellow, green, blue, violet六种颜色的变量color。根据输入的颜色名称输出以下六种植物花朵的颜色Rose(red), Poppies(orange), Sunflower(yellow), Grass(green), Bluebells(blue), Violets(violet)。如果输入的颜色名称不在变量color中例如输入purple请输出I dont know about the colorpurple.输入格式:第1行为颜色的数量n。接下来有n行字符串每行有一个字符串代表颜色名称颜色名称最多30个字符。输出格式:输出对应颜色的植物名称例如Bluebells are blue.如果输入的颜色名称不在color变量中例如purple, 请输出I dont know about the color purple.输入样例:3blueyellowpurple输出样例:Bluebells are blue.Sunflower are yellow.I dont know about the color purple.答案colors[red,orange,yellow,green,blue,violet] flowers[Rose, Poppies, Sunflower, Grass, Bluebells,Violets] nint(input()) for i in range(n): sinput() if s in colors: # colors和flowers的元素一一对应 # 因此只需求出flowers中s的索引就可以知道对应的flower indexcolors.index(s) flowerflowers[index] # %c输出单个字符%s输出字符串 print(%s are %s.%(flower,s)) else: print(I dont know about the color %s.%s)7-27 sdut-众数众数是指在一组数据中出现次数最多的数。例如1, 1, 3 中出现次数最多的数为 1则众数为 1。给定一组数你能求出众数吗输入格式:输入数据有多组数据组数不超过 50。对于每组数据第 1 行输入一个整数 n (1 n 10000)表示数的个数。第 2 行输入 n 个用空格隔开的整数 Ai (0 Ai 100000)依次表示每一个数。输出格式:对于每组数据在一行中输出众数以及它出的次数中间用空格分隔。数据保证有唯一的众数。输入样例:31 1 350 2 3 1 2输出样例:1 22 2答案while True: # 当没有更多输入时input()会抛出一个error # 所以需要try-except捕获这个error try: nint(input()) lslist( map(int,input().split()) ) # 求众数 # 函数ls.count计算某个数在列表中出现的次数 nummax(ls,keyls.count) # 求此众数出现的次数 cntls.count(num) print(%d %d%(num,cnt)) except: break