首页 > 代码库 > Python 基础练习 PAT水题(一)

Python 基础练习 PAT水题(一)

#学习笔记

#用以练习Python基础

#


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



1046. 划拳(15)

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。

下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。

输入格式:

输入第一行先给出一个正整数N(<=100),随后N行,每行给出一轮划拳的记录,格式为:

甲喊 甲划 乙喊 乙划

其中“喊”是喊出的数字,“划”是划出的数字,均为不超过100的正整数(两只手一起划)。

输出格式:

在一行中先后输出甲、乙两人喝酒的杯数,其间以一个空格分隔。

输入样例:

5
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15

输出样例:

1 2


AC代码

n=int(input())
x=y=0
for i in  range(n):
    L=str(input())
    L=L.split(‘ ‘)
    a1=int(L[0])
    a2=int(L[1])
    b1=int(L[2])
    b2=int(L[3])
    if(a2==a1+b1 and a2!=b2):
        x=x+1
    if(b2==a1+b1 and a2!=b2):
        y=y+1
print("%d %d" % (y,x))



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


1041. 考试座位号(15)

每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。

输入格式:

输入第一行给出一个正整数N(<=1000),随后N行,每行给出一个考生的信息:“准考证号 试机座位号 考试座位号”。其中准考证号由14位数字组成,座位从1到N编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数M(<=N),随后一行中给出M个待查询的试机座位号码,以空格分隔。

输出格式:

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用1个空格分隔。

输入样例:

4
10120150912233 2 4
10120150912119 4 1
10120150912126 1 3
10120150912002 3 2
2
3 4

输出样例:

10120150912002 2
10120150912119 1

AC代码

n=int(input())
#lists = [[] for i in range(n)]
lists=[]
for i in range(n):
    lists.append(str(input()).split(‘ ‘))
m=int(input())
x = str(input())
x = x.split(‘ ‘)
for k in x:
    for j in range(n):
        if(lists[j][1]==k):
            print(lists[j][0],lists[j][2])
            break




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

1044. 火星数字(20)

火星人是以13进制计数的:

  • 地球人的0被火星人称为tret。

  • 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。

  • 火星人将进位以后的12个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。

例如地球人的数字“29”翻译成火星文就是“hel mar”;而火星文“elo nov”对应地球数字“115”。为了方便交流,请你编写程序实现地球和火星数字之间的互译。

输入格式:

输入第一行给出一个正整数N(<100),随后N行,每行给出一个[0, 169)区间内的数字 —— 或者是地球文,或者是火星文。

输出格式:

对应输入的每一行,在一行中输出翻译后的另一种语言的数字。

输入样例:

4
29
5
elo nov
tam

输出样例:

hel mar
may
115
13

AC代码

N=int(input())
base=[‘tret‘,‘jan‘,‘feb‘, ‘mar‘, ‘apr‘, ‘may‘, ‘jun‘, ‘jly‘, ‘aug‘, ‘sep‘, ‘oct‘, ‘nov‘, ‘dec‘]
high=[‘tam‘, ‘hel‘, ‘maa‘, ‘huh‘, ‘tou‘, ‘kes‘, ‘hei‘, ‘elo‘, ‘syy‘, ‘lok‘, ‘mer‘, ‘jou‘]
def Mars2Earth(mars):
    S=mars.split(‘ ‘)
    if len(S) ==2:
        print((high.index(S[0])+1)*13+base.index(S[1]))
    else:
        try:
            print(base.index(S[0]))
        except:
            print((high.index(S[0])+1)*13)
def Earth2Mars(earth):
    h=earth//13
    if earth%13!=0 and h >0:
        print(high[h - 1], end=‘ ‘)
        print(base[earth%13])
    elif h>0 and earth%13==0:
        print(high[h - 1])
    elif h==0:
        print(base[earth%13])
for i in range(N):
    L=str(input())
    if L.isdecimal() ==True:
        Earth2Mars(int(L))
    else:
        Mars2Earth(L)


本文出自 “Chauncey” 博客,请务必保留此出处http://cqwujiang.blog.51cto.com/10808946/1919672

Python 基础练习 PAT水题(一)