Python练习题一
1、Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出
现需要统计若干段文字(英文)中的不同单词数量。
如果不同的单词数量不超过10个,则将所有单词输出(按字母顺序),否则输出前10个单词。
注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。
注3:单词大小写敏感,即'word'与'WORD'是两个不同的单词 。
输入说明
若干行英文,最后以!!!!!
为结束。
输出说明
不同单词数量。 然后输出前10个单词(按字母顺序),如果所有单词不超过10个,则将所有的单词输出。
str = []a = input()while a != "!!!!!": str += [" "] str += a a = input()count = []strCount = len(str)start = end = 0str.insert(0, " ")str.insert(len(str), " ")flag = 0for i in range(len(str)): if str[i - 1] == " " and str[i] != " ": flag += 1 start = i if str[i] != " " and str[i + 1] == " ": flag += 1 end = i if flag == 2: sub = str[start:end + 1] sub = "".join(sub) flag = 0 if sub not in count: count += [sub]print(len(count))count.sort()if len(count) > 10: for j in range(10): print(count[j])else: for j in range(len(count)): print(count[j])
2、python-从列表中删除元素
删除列表中所有符合条件的值。
输入格式:
输入n,代表要测试n次。每次测试:
首先,输入1行字符串(字符串内的元素使用空格分隔)
然后,输入要删除的元素x。
输出格式:
输出删除元素x后的每行字符串。如果元素全部被删除,则输出空行。
注意:行尾不得有多余的空格。
n=int(input())for i in range (n): a=input() b=input() print(*(a.replace(b," ")).split())
3、python-异常-学生成绩处理中级版
数据的第一行是n,代表有n行整数成绩需要统计。
接着连续输入n个成绩,如果中途输入错误(非整数
)提示'Error! Reinput',
并输出错误的数据。然后重新输入,直到输入n个正确的成绩才退出。如果整个
输入过程中没有错误数据,提示'All OK'。最后输出所有学生的平均值,保留两
位小 数。
注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉
空格再行处理。
输入格式:
第一行为n,代表接下来要输入的正确行数。
然后输入成绩,输入错误则提示重输,直到输入n行正确的数据为止。
输出格式:
如果输入过程中无异常,需输出All OK
。
n = int(input())num = nsum_grade = 0flag = Trueerr_grade = ""err_list = []while n: try: err_grade = input() grade = int(err_grade) sum_grade += grade n = n-1 except: flag = False err_list.append(err_grade)if flag: print("All OK")else: for grade in err_list: print("Error for data %s! Reinput" % grade)print("avg grade = %.2f" % (sum_grade/num))
4、python-班级人员信息统计
输入a,b班的名单,并进行如下统计。
输入格式:
第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符。
第2行::b班名单,一串字符串,每个学生名称以1个或多个空格分隔,可能有重复学生。
第3行::参加acm竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。
第4行:参加英语竞赛的学生,一串字符串,每个学生名称以1个或多个空格分隔。
第5行:转学的人(只有1个人)。
输出格式
特别注意:输出人员名单的时候需调用sorted函数,如集合为x,则print(sorted(x))
输出两个班级的所有人员数量
输出两个班级中既没有参加ACM,也没有参加English的名单和数量
输出所有参加竞赛的人员的名单和数量
输出既参加了ACM,又参加了英语竞赛的所有人员及数量
输出参加了ACM,未参加英语竞赛的所有人员名单
输出参加英语竞赛,未参加ACM的所有人员名单
输出参加只参加ACM或只参加英语竞赛的人员名单
最后一行:一个同学要转学,首先需要判断该学生在哪个班级,然后更新该班级名单,并输出。如果没有在任何一班级,什么也不做。
def HandleBlock(list): new_list = [] for item in list: if item != "": new_list.append(item) return new_listgrade_a_str = input()grade_b_original_list = input().split(" ")#acm_original_list = input().split(" ")english_original_list = input().split(" ")trans_school = input()grade_a_list = []for item in grade_a_str: grade_a_list.append(item)grade_b_list = HandleBlock(grade_b_original_list)acm_list = HandleBlock(acm_original_list)english_list = HandleBlock(english_original_list)check_table = {}for item in grade_a_list + grade_b_list: check_table[item] = 0# 通过哈希冲突来去重final_a = []final_b = []for item in grade_a_list: if check_table[item] == 0: final_a.append(item) check_table[item] = 1for item in grade_b_list: if check_table[item] == 0: final_b.append(item) check_table[item] = 1print(f'Total: {len(final_a) + len(final_b)}')Not_in_race = []All_racers = []ACMandEnglish = []Only_ACM = []Only_English = []ACMorEnglish = [] # 只参加了acm或者english中的一项for item in final_a + final_b: if item in acm_list: All_racers.append(item) if item in english_list: ACMandEnglish.append(item) else: Only_ACM.append(item) elif item in english_list: All_racers.append(item) if item in acm_list: ACMandEnglish.append(item) else: Only_English.append(item) else: Not_in_race.append(item)ACMorEnglish = list(set(Only_ACM) ^ set(Only_English))print(f"Not in race: {sorted(Not_in_race)}, num: {len(Not_in_race)}")print(f"All racers: {sorted(All_racers)}, num: {len(All_racers)}")print(f"ACM + English: {sorted(ACMandEnglish)}, num: {len(ACMandEnglish)}")print(f"Only ACM: {sorted(Only_ACM)}")print(f"Only English: {sorted(Only_English)}")print(f"ACM Or English: {sorted(ACMorEnglish)}")if trans_school in final_a: print(sorted(list(set(trans_school) ^ set(final_a))))elif trans_school in final_b: print(sorted(list(set(trans_school) ^ set(final_b))))else: pass
5、python-分段函数&数学函数
本题要求计算下列分段函数f(x)的值(x为从键盘输入的一个任意实数):
输入格式:
直接输入一个实数x
输出格式:
在一行中按“f(x)=result”的格式输出,其中x与result都保留三位小数。
import mathx = float(input())if math.fabs(x) = 1: a=2.5+(x+math.log(100)) result=(math.cos(x)+math.pow(x,2))/a print('f({:.3f})={:.3f}'.format(x, result))else: result=math.exp(x) print('f({:.3f})={:.3f}'.format(x, result))
6、计算表达式
输入一个形式如"操作数 运算符 操作数"的表达式,对2个整数进行乘、整除和求余(%)运算。
输入格式:
在一行中输入形式如"操作数 运算符 操作数"的表达式。
输出格式:
在一行中输出表达式及计算结果。
s = input()s = s.replace(' ','')try: print(s,eval(s),sep='=')except: print('Invalid operator')
7、计算各对应位乘积之和
读入两个整数a和b,输出绝对值a和绝对值b的各对应位乘积之和,如a=1234,b=608,则输出值为:“1×0+2×6+3×0+4×8“的值,即44。
输入格式:
在一行中输入两个数
输出格式:
在一行中输出对应位乘积之和
a,b=map(int,input().split())a=abs(a)b=abs(b)sum=0while True: if a==0 and b==0: break sum=sum+((a%10)*(b%10)) a=a//10 b=b//10print(sum)
8、输出一个 n 阶的方阵
读入 1 个正整数 n(3≤n<9)和 1 个整数 digit(2<=digit<=9), 请输出一个 n 阶的方阵, 该矩阵所有边上的元素都是 digit, 其它元素都是 digit-1.
输入格式:
在一行中输入n和digt
输出格式:
输出n 阶的方阵
list=list(input().split())n=int(list[0])digit=int(list[1])if 3<=n<9 and 2<=digit<=9: for i in range(0,n): if i==0: for j in range(0,n): print('%1d'%(digit),end=" ") print() if i==n-1: for j in range(0,n): print('%1d'%(digit),end=" ") print() if i!=0 and i!=n-1: for j in range(1,n): if j==1: print('%1d'%(digit),end=" ") if j==n-1: print('%1d'%(digit),end=" ") else: print('%1d' % (digit-1),end=" ") print()
9、计算方阵的和,创建新方阵
输入 1 个正整数 n(1≤n),再按行读入 n 阶方阵 a 和 b, 生成并输出 n 阶方阵 c,c 中的元素是 a 和 b 对应元素的和. c[i][j]=a[i][j]+b[i][j] i,j=0,1,2...n-1(1<=c[i]<=99)
输入格式:
在第一行输入n 在第二行输入a方阵 在第一行输入b方阵
输出格式:
输出c方阵
n=int(input())a=input().split()b=input().split()l=len(a)a=[int(x) for x in a]b=[int(x) for x in b]c=[]k=0for i in range(l): c.append(a[i]+b[i])for i in range(n): for j in range(n): print("{:2d}".format(c[k]),end=" ") k+=1 print("")
10、求出歌手的得分
输入一个正整数n (n>4),再输入n个实数,求出歌手的得分(保留2位小数)。设一歌唱评奖晚会上有n(n>4)个评委为歌手打分.评分规则:每个评委依次打分,再去掉2个最高分和2个最低分,计算余下的分数平均值为歌手的得分.
输入格式:
在第一行中输入n 在第二行中输入n个分数
输出格式:
在一行中输出平均分数
n=int(input())a=[int(x) for x in input().split()]max1=max(a)a.remove(max1)max2=max(a)a.remove(max2)min1=min(a)a.remove(min1)min2=min(a)a.remove(min2)sum=0for i in range(len(a)): sum=sum+a[i]result=sum/len(a)print("aver={:.2f}".format(result))
建议收藏,求一波三连......