Python练习四——PTA

7-1 求出歌手的得分 (40 分)

输入一个正整数n (n>4),再输入n个实数,求出歌手的得分(保留2位小数)。设一歌唱评奖晚会上有n(n>4)个评委为歌手打分.评分规则:每个评委依次打分,再去掉2个最高分和2个最低分,计算余下的分数平均值为歌手的得分.

输入格式:

在第一行中输入n 在第二行中输入n个分数

输出格式:

在一行中输出平均分数

输入样例:

在这里给出一组输入。例如:

10
10 10 9 9 9 8 8 8 7 7

结尾无空行

输出样例:

在这里给出相应的输出。例如:

aver=8.50

结尾无空行

n=int(input())#一行数字的输入
# for i in range(n):#想要whilen--
a=map(int,input().split())
a=sorted(a)#map没有sort函数吗
# print(a)
del a[0]
del a[0]
del a[-1]
del a[-1]
ans=sum(a)/(n-4)
print("aver=",end="")
print("%.2lf" %ans)

7-2 输出字母在字符串中位置索引 (30 分)

输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。

输入格式:

第一行输入字符串
第二行输入两个字符,用空格分开。

输出格式:

从右向左输出字符和索引,即下标最大的字符最先输出。每行一个。

输入样例:

在这里给出一组输入。例如:

pmispsissippi
s p

结尾无空行

输出样例:

在这里给出相应的输出。例如:

11 p
10 p
8 s
7 s
5 s
4 p
3 s
0 p

结尾无空行

s=[]
s=input()
m=[]
m=input()
length=len(s)-1
s=list(s)
#s=s.reverse()#为什么输出了None
s.reverse()
# print(s)
m=list(m)
del m[1]
for i in range(0,length+1):
    ans=length-i
    if s[i]==m[0]:
        print("%d " %ans,end="")
        print(m[0])
    elif s[i]==m[1]:
        print("%d " %ans,end="")
        print(m[1])

7-3 汉字表示的大写数字金额 (10 分)

输入一个整数金额,输出汉字表示的大写金额。假设输入的金额数为正整数,且最大为12位数字。

输入格式:

输入一个正整数,表示金额,最大位数为12。

输出格式:

输出汉字表示的大写金额。输出的时候,从第一位数字开始,后面所有的位数都需要输出,包括0(零)。

输入样例:

123456789

结尾无空行

输出样例:

壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆

结尾无空行

输入样例:

987600020000

结尾无空行

输出样例:

玖仟捌佰柒拾陆亿零仟零佰零拾贰万零仟零佰零拾零圆

结尾无空行

果然我还是适合安静的环境,之前还以为多难,后来发现数据还好,连续出现0的位置也要求输出零仟零佰什么的,所以也就还好。

#我的思路:先把数据按四个四个隔开,上千的几千,上百的几百,然后看有几位数,决定输出万还是亿
#我的思路好麻烦,要判断好多东西
s=[]
s=str(input())
s=list(s)
# print(s)
#发现没有[-4:-1]的这种表现方式
length=len(s)
zd={}
zd[0]="零"
zd[1]="壹"
zd[2]="贰"
zd[3]="叁"
zd[4]="肆"
zd[5]="伍"
zd[6]="陆"
zd[7]="柒"
zd[8]="捌"
zd[9]="玖"
for i in range(len(s)):
   # tmp=ord(s[i])-48
   print(zd[ord(s[i])-48],end="")
   if len(s)-i==9:
    print("亿",end="")
    continue
   if len(s)-i==5:
    print("万",end="")
    continue
   if  (len(s)-i)==7 or (len(s)-i)==3 or (len(s)-i)==11:
    print("佰",end="")
   elif  (len(s)-i)==8 or (len(s)-i)==4 or (len(s)-i)==12:
    print("仟",end="")
   elif  (len(s)-i)==6 or (len(s)-i)==2 or (len(s)-i)==10:
    print("拾",end="")
print("圆")

7-4 输出元组内指定值 (10 分)

输入一序列数字,以空格分隔开,将其转换为元组进行操作,输出元组内7的倍数及个位是7的数。

输入格式:

输入多个自然数,以空格分隔。

输出格式:

查找元组内7的倍数及个位是7的数输出,以空格分隔。

输入样例:

在这里给出一组输入。例如:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

结尾无空行

输出样例:

在这里给出相应的输出。例如:

7
14
17

结尾无空行

n=[]
n=map(int,input().split())
n=list(n)
for i in n:
    if i%7==0 or i%10==7:
        print(i)

7-5 字符替换 (30 分)

本题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换,其他字符不变。(提示:转换表用元组实现)

原字母 对应字母
A Z
B Y
C X
D W
... ...
X C
Y B
Z A

输入格式:

在一行中输入字符串

输出格式:

在一行中给出替换完成后的字符串。

输入样例:

在这里给出一组输入。例如:

This is a pen.

结尾无空行

输出样例:

在这里给出相应的输出。例如:

Ghis is a pen.

结尾无空行

s=[]
s=input()
for i in s:
    if i.isupper():
        tmp1=ord(i)-65
        tmp2=90-tmp1
        i=chr(tmp2)
#         print(i)
    print(i,end="")s=[]
s=input()
for i in s:
    if i.isupper():
        tmp1=ord(i)-65
        tmp2=90-tmp1
        i=chr(tmp2)
#         print(i)
    print(i,end="")

7-6 使用字符串的索引和切片知识输入月份数字,输出英文月份缩写 (10 分)

这是一个编程题。请在这里写题目描述。例如:本题目要求输入一个1-12的整数,输出对应的月份名称的缩写。

输入格式:

请在这里写输入格式。例如:输入在一行中给出1个绝对值不超过12的整数如:3。

输出格式:

请在这里描述输出格式。例如:对每一个输入,在下一行中输出月份的缩写的值如:Mar。

输入样例:

在这里给出一组输入。例如:

3

结尾无空行

输出样例:

在这里给出相应的输出。例如:

Mar

结尾无空行

time={}
time[1]='Jan'
time[2]='Feb'
time[3]='Mar'
time[4]='Apr'
time[5]='May'
time[6]='Jun'
time[7]='Jul'
time[8]='Aug'
time[9]='Sep'
time[10]='Oct'
time[11]='Nov'
time[12]='Dec'
n=int(input())
print(time[n])

7-7 jmu-python-凯撒密码加密算法 (10 分)

编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。

输入格式:

接收两行输入,第一行为待加密的明文,第二行为密钥k。

输出格式:

输出加密后的密文。

输入样例:

在这里给出一组输入。例如:

Hello World!
3

结尾无空行

输出样例:

在这里给出相应的输出。例如:

Khoor Zruog!

结尾无空行

s=input()#DABD
n=int(input())
for i in s:
    if i.isalpha():
      tmp=int(ord(i)+n)
#       print(ord(i),tmp)
      tmp1=tmp#当超过Z和z时,循环回来
      if tmp1>90 and tmp1<97:
            tmp=tmp1-90+65-1
      elif tmp1>122:
            tmp=tmp1-122+97-1
      i=chr(tmp)
    print(i,end="")

7-8 特定数之和 (30 分)

小丽对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 n 中,所有这样的数的和是多少?

输入格式:

输入一行包含一个整数 n。

输出格式:

输出一行,包含一个整数,表示满足条件的数的和。

输入样例:

40

结尾无空行

输出样例:

574

结尾无空行

评测用例规模与约定

对于 20%的评测用例,1≤n≤10。 对于 50%的评测用例,1≤n≤100。 对于 80%的评测用例,1≤n≤1000。 对于所有评测用例,1≤n≤10000。

s=[]
s.append(2)
s.append(0)
s.append(1)
s.append(9)#我想一次全加进去
n=int(input())
sum=0
for i in range(1,n+1):
    tmp=str(i)
    for j in range(4):
        if str(s[j]) in tmp:
#             print(i)
            sum+=i
            break
print(sum)

7-9 缩写期刊名 (10 分)

科研工作者经常要向不同的期刊投稿。但不同期刊的参考文献的格式往往各不相同。有些期刊要求参考文献所发表的期刊名必须采用缩写形式,否则直接拒稿。现对于给定的期刊名,要求按以下规则缩写: (1)长度不超过4的单词不必缩写; (2)长度超过4的单词仅取前4个字母,但其后要加“.”; (3)所有字母都小写。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。 每组测试输入一个包含大小写字母和空格的字符串(长度不超过85),单词由若干字母构成,单词之间以一个空格间隔。

输出格式:

对于每组测试,在一行上输出缩写后的结果,单词之间以一个空格间隔。

输入样例:

2
Ad Hoc Networks
IEEE Transactions on Nanotechnology

输出样例:

ad hoc netw.

ieee tran. on nano.

n=int(input())
m=[]
for j in range(n):
    l=0
    m=map(str,input().split())
    for i in m:
        l+=1
        if len(i)>4 and l>1:
            i=i[0:4]
            print(" "+i.lower()+".", end="")
        elif l==1:
            if len(i)>4:
                i=i[0:4]
                print(i.lower() + ".", end="")
            else :
                print(i.lower() , end="")
        else:
            print(" "+i.lower(),end="")
        # if l!=len(m):
        #     print(" ")
    print()

3-2. 以下哪句打印出smith\exam1\test.txt?

(1分)

A.

print("smith\exam1\test.txt")

B.

print("smith\\exam1\\test.txt")

C.

print("smith\"exam1\"test.txt")

D.

print("smith"\exam1"\test.txt")

换行回车等特殊字符是转义字符那样的吗,还是那样。

python字符串是一个定长的字符数组,通过下标控制长度,没有结束标识。 

猜你喜欢

转载自blog.csdn.net/qq_51976555/article/details/121150593