【Python】PAT-1044 火星数字

本文详细讲解了如何通过编程解决将数字转为火星文的问题,涉及判断逻辑和字符对应关系,重点在于高位火星人字符处理和13进制规则的应用。通过def_to_huoxing和def_to_number函数实现数字到火星文的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 题目

image-20210403105335994

2. 代码

2.1 分析

题目本身不难。只是需要处理的判断逻辑还是比较多的。

特别注意:13 ==> 火星文 是tam, 而不是tam tret

26 ==> 火星文 是hel, 而不是hel tret

能整除13的时候,低位的tret不输出。

2.2 代码

low = ['tret','jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jly', 'aug', 'sep', 'oct', 'nov', 'dec']
high = ['tret','tam', 'hel', 'maa', 'huh', 'tou', 'kes', 'hei', 'elo', 'syy', 'lok', 'mer', 'jou']

def to_huoxing(x):
    if x < 13:
        return low[x]
    elif x % 13 == 0:
        # 火星人,当高位上有数字的时候,低位不说0
        return high[x//13]
    else:
        return high[x//13] + " " +  low[x%13]

def to_number(x):
    l = x.split(" ")
    if len(l) == 2:
        # 两位
        i_high = high.index(l[0])
        i_low = low.index(l[1])
        return i_high * 13 + i_low

    # 1位
    i = l[0]
    if i in low:
        return low.index(i)
    else:
        return high.index(l[0])*13


def main(n):
    if '0' <= n[0] and n[0] <= '9':
        n = int(n)
        print(to_huoxing(n))
    else:
        
        print(to_number(n))

    
x = int(input())
for i in range(x):
    s = input()
    main(s)

3. AC截图

image-20210403105724710

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏2同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值