PAT 1100 Mars Numbers (20 分) (Python 实现)(中文)

题目:

地球上的零在火星上被称为“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

两个星球的转化 是 以13进制进行的。
代码:

n=int(input())
word1=['tret','jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jly', 'aug', 'sep', 'oct', 'nov', 'dec']
word2=['tret','tam', 'hel', 'maa', 'huh', 'tou', 'kes', 'hei', 'elo', 'syy', 'lok', 'mer', 'jou']
nums = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
def mars(x):
    x=int(x)
    #最开始用的办法:但是当数字是13的整数倍的时候会输出两个单词,但是结果只需要一个。所以改为一下代码
    #if x<13:
    #	return word1[x]
	#else:
    #	return word2[x//13]+' '+word1[x%13]  


    if x%13 == 0 :
        return word2[x//13]
    else:
        if x//13 != 0 :
            return word2[x//13]+' '+word1[x%13]
        else:
            return word1[x%13]
def earth(x):
    x1=x.split()
    if len(x1)==2:
        return str(word2.index(x1[0])*13+word1.index(x1[1]))
    else:
        if x1[0] in word2:
            return str(word2.index(x1[0])*13)
        else:
            return str(word1.index(x1[0]))
for a in range(n):
    x=input()
    if x[0].isdigit()==True:
        print(mars(x))
    else:
        print(earth(x))   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值