> 文档中心 > Python练习题一

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

 

 建议收藏,求一波三连......