PTA 币值转换

问题描述

        输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

输入格式:

输入在一行中给出一个不超过9位的非负整数。

输出格式:

在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。

输入样例1:

813227345

输出样例1:

iYbQdBcScWhQdBeSf

输入样例2:

6900

输出样例2:

gQjB

代码实现:

 

def main():
    N = int(input())
    n = N
    num = [0] * 9
    m = ['\n', 'S', 'B', 'Q', 'W', 'S', 'B', 'Q', 'Y']

    for i in range(9):
        num[i] = n % 10 + 97
        n = n // 10

    i = 8
    while num[i] == 97 and i > 0:
        i -= 1

    if N != 0:
        flag1 = 0
        flag2 = 1

        while i >= 0:
            if num[i] != 97:
                flag1 = 0
                print(f"{chr(num[i])}{m[i]}", end="")
            else:
                flag2 = 1
                p = i - 1

                while p >= 0:
                    if num[p] != 97:
                        flag2 = 0
                    p -= 1

                if i == 4:
                    print(m[i], end="")

                if flag1 == 0 and flag2 != 1:
                    print(chr(num[i]), end="")

                flag1 = 1

            i -= 1
    else:
        print("a")

if __name__ == "__main__":
    main()

代码思路:

  1. 首先,通过 input() 函数获取一个整数 N,将其转换为整数类型并赋值给变量 N,并创建一个长度为9的列表num用于存储每一位上的数字(加上97以便后续转换为字母),同时创建一个对应的列表m存储每一位的特殊字符。

  2. 接着通过循环将整数N的每一位数字提取出来,加上97(ASCII码中小写字母a的值),并存入num列表中,同时N不断除以10以便获取下一位。

  3. 之后,程序从最高位开始检查num列表中的值,跳过那些值为97的位(即原数字中的0位)。

  4. 如果N不为0,程序设置两个标志变量flag1flag2,分别用于控制是否打印当前位的特殊字符和是否打印零的占位符。

  5. 然后进入一个循环,从最高位向个位遍历,如果当前位不是97(即不是0),就打印对应的字母和特殊字符;如果是97,则根据标志变量的情况决定是否打印特殊字符或占位符。

  6. 特别的,当遍历到万位且万位为0时,即使前面有非零位也需要打印万位的特殊字符'W'。

  7. 如果输入的N为0,则直接打印"a"。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值