Python 基础练习 PAT水题(三)

#学习笔记

#用以练习python基础

#

原题链接:https://www.patest.cn/contests/pat-b-practise/1039

1039. 到底买不买(20)

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。

为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。


图 1

输入格式:

每个输入包含1个测试用例。每个测试用例分别在2行中先后给出摊主的珠串和小红想做的珠串,两串都不超过1000个珠子。

输出格式:

如果可以买,则在一行中输出“Yes”以及有多少多余的珠子;如果不可以买,则在一行中输出“No”以及缺了多少珠子。其间以1个空格分隔。

输入样例1:

ppRYYGrrYBR2258
YrR8RrY

输出样例1:

Yes 8

输入样例2:

ppRYYGrrYB225
YrR8RrY

输出样例2:

No 2

AC代码

L=list(input())
N=list(input())
x=len(N)
t=-1
for i in range(len(N)):
    try:
        if L.index(N[t])>=0:
            L.pop(L.index(N[t]))
            x=x-1
            N.pop()
    except:
        t=t-1
if len(N)==0:
    print("Yes",len(L))
else:
    print("No",x)

原题链接:https://www.patest.cn/contests/pat-b-practise/1054

1054. 求平均值 (20)

本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。

输入格式:

输入第一行给出正整数N(<=100)。随后一行给出N个实数,数字间以一个空格分隔。

输出格式:

对每个非法输入,在一行中输出“ERROR: X is not a legal number”,其中X是输入。最后在一行中输出结果:“The average of K numbers is Y”,其中K是合法输入的个数,Y是它们的平均值,精确到小数点后2位。如果平均值无法计算,则用“Undefined”替换Y。如果K为1,则输出“The average of 1 number is Y”。

输入样例1:

7
5 -3.2 aaa 9999 2.3.4 7.123 2.35

输出样例1:

ERROR: aaa is not a legal number
ERROR: 9999 is not a legal number
ERROR: 2.3.4 is not a legal number
ERROR: 7.123 is not a legal number
The average of 3 numbers is 1.38

输入样例2:

2
aaa -9999

输出样例2:

ERROR: aaa is not a legal number
ERROR: -9999 is not a legal number
The average of 0 numbers is Undefined

AC代码

N=int(input())
L=list(str(input()).split(‘ ‘))
sum1=0
x=0
for i in range(N):
    try:
        if float(L[i])>=-1000 and float(L[i])<=1000 and len(str(float(L[i])).split(‘.‘)[1]) <=2:
            sum1=sum1+float(L[i])
            x=x+1
        else:
            print(‘ERROR:‘,L[i],‘is not a legal number‘)
    except:
        print(‘ERROR:‘,L[i],‘is not a legal number‘)
if x==0:
    print(‘The average of 0 numbers is Undefined‘)
elif x==1:
    print(‘The average of 1 number is %0.2f‘ % (sum1))
else:
    print(‘The average of %d numbers is %.2f‘ % (x,sum1/x))

原题链接:https://www.patest.cn/contests/pat-b-practise/1012

1012. 数字分类 (20)

给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:

  • A1 = 能被5整除的数字中所有偶数的和;
  • A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
  • A3 = 被5除后余2的数字的个数;
  • A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
  • A5 = 被5除后余4的数字中最大数字。

    输入格式:

    每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

    输出格式:

    对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

    若其中某一类数字不存在,则在相应位置输出“N”。

    输入样例1:

    13 1 2 3 4 5 6 7 8 9 10 20 16 18

    输出样例1:

    30 11 2 9.7 9

    输入样例2:

    8 1 2 4 5 6 7 9 16

    输出样例2:

    N 11 2 N 9
import math
L=list(str(input()).split(‘ ‘))
L.pop(0)
A1=[]
A3=[]
A4=[]
A5=[]
sum1=0
k=0
max1=-1
q=0
try:
    for i in L:
        if i.isalnum()==True :
            if int(i)%5==0 and int(i) % 2 ==0:
                A1.append(int(i))
            if int(i)%5==1 :
                sum1=int(sum1+int(i)*math.pow(-1,k))
                k=k+1
            if int(i) % 5 == 2 :
                A3.append(i)
            if int(i) % 5 == 3:
                A4.append(int(i))
            if int(i) % 5 == 4:
                if int(i) > max1:
                    max1=int(i)
    if len(A1) ==0:
        A5.append(‘N‘)
    else:
        A5.append(sum(A1))
    
    if k ==0:
        A5.append(‘N‘)
    else:
        A5.append(sum1)
    
    if len(A3) ==0:
        A5.append(‘N‘)
    else:
        A5.append(len(A3))
    
    if len(A4) ==0:
        A5.append(‘N‘)
    else:
        A5.append(round(sum(A4)/len(A4),1))
    
    if max1==-1:
        A5.append(‘N‘)
    else:
        A5.append(max1)
    print(A5[0],A5[1],A5[2],A5[3],A5[4])
except:
    print(‘N N N N N‘)
时间: 2024-10-09 22:27:00

Python 基础练习 PAT水题(三)的相关文章

Python 基础练习 PAT水题(一)

#学习笔记 #用以练习Python基础 # #原题链接 https://www.patest.cn/contests/pat-b-practise/1046 1046. 划拳(15) 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字.如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒.两人同赢或两人同输则继续下一轮,直到唯一的赢家出现. 下面给出甲.乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒. 输入格式: 输

Python 基础练习 PAT水题(二)

#学习笔记 #用以练习Python基础 # 原题链接:https://www.patest.cn/contests/pat-b-practise/1011 1011. A+B和C (15) 给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A.B和C.整数间以空格分隔. 输出格式: 对每组测试用例,在一行中输出"Case #X: true"如果

Python 基础练习 PAT水题(四)

#学习笔记 #用以练习python基础 # 原题链接:https://www.patest.cn/contests/pat-b-practise/1050 1050. 螺旋矩阵(25) 本题要求将给定的N个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第1个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为m行n列,满足条件:m*n等于N:m>=n:且m-n取所有可能值中的最小值. 输入格式: 输入在第1行中给出一个正整数N,第2行给出N

Python 基础之socket编程(三)

python 基础之socket编程(三) 前面实现的基于socket通信只能实现什么呢?在tcp协议的通信中就是一个用户说一句,服务端给你回一句,你再给服务端说一句,服务端再给你回一句,就这样一直友好的玩耍下去了.等等,又有一个用户来了,他呢也想和和服务端进行一下交流,于是他就给服务端发送了一条消息,之后等呀等不知过了多久,任然没有等到服务端给他发挥的消息,只有什么时候他就可以和服务端愉快的玩耍了呢?这个就需要第一个用户退出和服务器的链接,此时第二个客户端才会和服务端建立起链接,此时此刻,他才

python基础:字符编码问题三个不可见的字符(0xEF 0xBB 0xBF,即BOM)

一.用utf-8格式保存的txt文件等,如何去掉BOM头 Windows系统的txt文件在使用utf-8编码保存时会默认在文件开头插入三个不可见的字符(0xEF 0xBB 0xBF)称为BOM头,这个BOM头在python的codecs库中已经定义为常量(codecs.BOM_UTF8) 方法一:utf8temp.txt保存时选择utf-8保存 1 import codecs 2 data=open("utf8temp.txt",'r',encoding='utf-8').read()

Python基础之常用模块(三)

1.configparser模块 该模块是用来对文件进行读写操作,适用于格式与Windows ini 文件类似的文件,可以包含一个或多个节(section),每个节可以有多个参数(键值对) 配置文件的格式如下: [DEFAULT] serveralagas = 24 asdgasg = yes sdg = 123 [hello] user = hd [world] what = fuck 这种文件格式就像是一个大字典,每个标题就是一个key,字典中嵌套着字典 还有需要注意的是,[DEFAULT]

python基础之socket编程(TCP三次握手和四次挥手)

TCP协议中中的三次握手和四次挥手 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?简单的过程如下: [注意]中断连接端可以是Client端,也可以是Server端. 假设Client端发起中断连接请求,也就是发送FIN报

二分图水题三发

POJ1274 The Perfect Stall 题目大意:n个奶牛m个仓库,每个奶牛都有喜欢的仓库,当然一个奶牛只能住进一个仓库 ,一个仓库也只能让一个奶牛吃,问最多有多少奶牛能住进喜欢的仓库 思路:裸的匹配 练下模板 //poj1274 #include <stdio.h> #include <iostream> #include<queue> #include <string.h> #include <algorithm> #define

Python基础班每日整理(三)

02_Python基础_day04 while循环的基本格式初始化计数器while 条件:满足条件要重复执行的代码--修改计数器 明白break和continue两个关键字的作用,两者的区别是什么?break和continue都是专门用在循环中关键字,break是退出当前循环,不再执行当前循环后续代码continue是退出本次循环,继续下一次循环break和continue都只针对当前循环有效 字符串中常见的转义字符有哪些?\t制表符,输出文本时保持垂直方向对齐\n换行符 \输出反斜杠\r回车