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 = 0


str.insert(0, " ")
str.insert(len(str), " ")




flag = 0
for 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])

Python练习题一_第1张图片

2、python-从列表中删除元素

删除列表中所有符合条件的值。

输入格式:

输入n,代表要测试n次。每次测试:
首先,输入1行字符串(字符串内的元素使用空格分隔)
然后,输入要删除的元素x。

输出格式:

输出删除元素x后的每行字符串。如果元素全部被删除,则输出空行。
注意:行尾不得有多余的空格。

n=int(input())
for i in range (n):
    a=input()
    b=input()
    print(*(a.replace(b," ")).split())
    

 Python练习题一_第2张图片

3、python-异常-学生成绩处理中级版

数据的第一行是n,代表有n行整数成绩需要统计。
接着连续输入n个成绩,如果中途输入错误(非整数)提示'Error! Reinput',
并输出错误的数据。然后重新输入,直到输入n个正确的成绩才退出。如果整个
输入过程中没有错误数据,提示'All OK'。最后输出所有学生的平均值,保留两
位小 数。

注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉
空格再行处理。

输入格式:

第一行为n,代表接下来要输入的正确行数。
然后输入成绩,输入错误则提示重输,直到输入n行正确的数据为止。

输出格式:

如果输入过程中无异常,需输出All OK

n = int(input())
num = n
sum_grade = 0
flag = True
err_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))

 Python练习题一_第3张图片

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_list


grade_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] = 1
for item in grade_b_list:
    if check_table[item] == 0:
        final_b.append(item)
        check_table[item] = 1

print(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

Python练习题一_第4张图片

5、python-分段函数&数学函数

本题要求计算下列分段函数f(x)的值(x为从键盘输入的一个任意实数):

输入格式:

直接输入一个实数x

输出格式:

在一行中按“f(x)=result”的格式输出,其中x与result都保留三位小数

import math
x = float(input())
if math.fabs(x) < 1:
    result=math.sqrt(2-2*x)
    print('f({:.3f})={:.3f}'.format(x,result))
elif 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))

Python练习题一_第5张图片

6、计算表达式

输入一个形式如"操作数 运算符 操作数"的表达式,对2个整数进行乘、整除和求余(%)运算。

输入格式:

在一行中输入形式如"操作数 运算符 操作数"的表达式。

输出格式:

在一行中输出表达式及计算结果。

s = input()
s = s.replace(' ','')
try:
    print(s,eval(s),sep='=')
except:
    print('Invalid operator')

 Python练习题一_第6张图片

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=0
while True:
    if a==0 and b==0:
        break
    sum=sum+((a%10)*(b%10))
    a=a//10
    b=b//10
print(sum)

 Python练习题一_第7张图片

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

 Python练习题一_第8张图片

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=0
for 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("")

 Python练习题一_第9张图片

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=0
for i in range(len(a)):
    sum=sum+a[i]
result=sum/len(a)
print("aver={:.2f}".format(result))

 Python练习题一_第10张图片

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

你可能感兴趣的:(python一百例,python)