一起挑战pythontip的题目(4)

简介: 一起挑战pythontip的题目(4)

第16题:人民币金额打印


题目描述:银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。


在中文大写方式中,0到10以及100、1000、10000被依次表示为:    零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万


以下的例子示范了阿拉伯数字到人民币大写的转换规则:


1    壹圆

11    壹拾壹圆

111    壹佰壹拾壹圆

101    壹佰零壹圆

-1000    负壹仟圆

1234567    壹佰贰拾叁万肆仟伍佰陆拾柒圆

现在给你一个整数a(|a|<100000000), 请你打印出人民币大写表示.


例如:a=1

则输出:壹圆

注意:请以Unicode的形式输出答案。提示:所有的中文字符,在代码中直接使用其Unicode的形式即可满足要求,中文的Unicode编码可以通过如下方式获得:u'壹'。


注意:代码无需声明编码!!不要在代码头部声明文件编码,否则会导致语法错误!


Note:数据已于2013-11-19日加强,原来通过的代码可能不能再次通过。


示例:输入:a = 0

输出:零圆


def Translate(num):
    '''数字转人民币格式'''
    if type(num)==type(''):
        try: f=float(num)
        except: return u'金额字符串无法转换成数字!'
        if f<0: num=num[1:]
        tmp = num.split('.')
    elif type(num) in [type(0),type(0.0)]:
        fNum=1.0e+16 # 如果是数字大于100兆会被截尾处理,字符串不受影响
        if not 0<=num<fNum: return f'金额必须为非负数且小于{fNum}!'
        tmp = str(num).split('.')
    else: return u'金额必须是数字或字符串!'
    ret,cn='', ['']*3
    cnStr = (u'角分整',u'零壹贰叁肆伍陆柒捌玖',u'元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟京拾佰仟')
    for i in range(3): cn[i]=[c for c in cnStr[i]]
    if len(tmp[0])>len(cn[2]): return u'金额数值过大,已超过设置的最大值!'
    if len(tmp)>1 and len(tmp[1])>2: tmp[1]=tmp[1][:2] #小数大于2位截尾处理
    #转换整数和小数
    for i,n in enumerate(reversed(list(tmp[0]))): ret = cn[1][int(n)]+cn[2][i]+ret
    if len(tmp)>1:
        if tmp[0][-1]=='0': ret += cn[1][0]
        for i,n in enumerate(list(tmp[1])): ret += cn[1][int(n)] + cn[0][i]
    for i in range(2): ret=ret.replace(cn[1][0]+cn[0][i],cn[1][0])
    for i in range(1,4): ret=ret.replace(cn[1][0]+cn[2][i],cn[1][0])
    for i in range(3,1,-1): ret=ret.replace(cn[1][0]*i,cn[1][0])
    for i in range(0,len(cn[2]),4): ret=ret.replace(cn[1][0]+cn[2][i],cn[2][i])
    for i in range(4,10,4): ret=ret.replace(cn[2][i+4]+cn[2][i],cn[2][i+4])
    if ret[0] in {cn[1][0],cn[2][0]}: ret=ret[1:]
    if len(ret)>1:
        if ret[-1] == cn[1][0]: ret=ret[:-1]+cn[0][2]
        if ret[-1] == cn[2][0]: ret+=cn[0][2]
        if ret[0] in {cn[1][0],cn[2][0]}: ret=ret[1:]
    else:
        ret=cn[1][0]+cn[2][0] 
    return ret



这是以前写过的函数,与题目要求类似。原文链接:https://blog.csdn.net/boysoft2002/article/details/115796371

============================================================

第17题:公约数的个数

题目描述:给你两个正整数a,b,  输出它们公约数的个数。

例如:a = 24, b = 36

则输出:6

示例:输入:a = 24

b = 36

输出:6


>>> def func(a,b):
  k=0
  for i in range(1,min(a,b)+1):
    if a%i==0 and b%i==0:
      k+=1
  return k
>>> func(a,b)
6
>>> 


或:用推导式把公约数写入一个列表,长度即个数。

len([i for i in range(1,min(a,b)+1) if a%i==0 and b%i==0])




============================================================

第18题:逆解最大公约数与最小公倍数

题目描述:我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。今天我们反其道而行之,给你两个数a和b,计算出它们分别是哪两个数的最大公约数和最小公倍数。输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。注:所给数据都有解,不用考虑无解的情况。

例如:a=3, b = 60

则输出:12 15



============================================================

第19题:单身情歌

题目描述:抓不住爱情的我 总是眼睁睁看它溜走 ...现在来练习一下发现爱的能力,给你一个字符串a,如果其中包含"LOVE"(love不区分大小写)则输出LOVE,否则输出SINGLE。

例如:a ="OurWorldIsFullOfLOVE"

则输出:LOVE

示例:输入:a = "OurWorldIsFullOfLOVE"

输出:LOVE



============================================================

第20题:信息加密

题目描述:给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中比它大b的字母。这里将字母表的z和a相连,如果超过了z就回到了a。

例如a="cagy", b=3,

则输出 :fdjb

示例:输入:a = "cagy"

b = 3

输出:fdjb

============================================================



目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 边缘计算
联邦
随着人工智能的发展,联邦学习在打破“数据孤岛”和保护隐私方面展现出巨大潜力,但也面临诸多安全挑战。本文总结了五个关键研究方向:1. 提高防御方法的鲁棒性,以应对多种攻击;2. 研究更多样化的攻击手段,促进防御进步;3. 提升通信效率,平衡安全与性能;4. 探索异构联邦学习,拓展应用场景;5. 增强模型可解释性,确保应用安全。未来需深入研究这些方向,推动联邦学习成为数据安全领域的关键技术。
|
7月前
|
人工智能 运维 安全
|
9月前
|
C++ 容器
【c++丨STL】stack和queue的使用及模拟实现
本文介绍了STL中的两个重要容器适配器:栈(stack)和队列(queue)。容器适配器是在已有容器基础上添加新特性或功能的结构,如栈基于顺序表或链表限制操作实现。文章详细讲解了stack和queue的主要成员函数(empty、size、top/front/back、push/pop、swap),并提供了使用示例和模拟实现代码。通过这些内容,读者可以更好地理解这两种数据结构的工作原理及其实现方法。最后,作者鼓励读者点赞支持。 总结:本文深入浅出地讲解了STL中stack和queue的使用方法及其模拟实现,帮助读者掌握这两种容器适配器的特性和应用场景。
208 21
|
Python 容器
Python与GUI编程:创建图形用户界面
Python的Tkinter库是用于构建GUI应用的内置工具,无需额外安装。它提供了丰富的控件,如按钮、文本框等,让用户通过图形界面与程序交互。创建GUI窗口的基本步骤包括:导入Tkinter库,创建窗口对象,设置窗口属性,添加控件(如标签和按钮),并使用布局管理器(如`pack()`或`grid()`)来组织控件的位置。此外,可以通过绑定事件处理函数来响应用户操作,例如点击按钮。Tkinter还有更多高级功能,适合开发复杂GUI应用。
|
10月前
|
人工智能 自然语言处理 数据挖掘
田渊栋团队新作祭出Agent-as-a-Judge!AI智能体自我审判,成本暴跌97%
田渊栋团队提出Agent-as-a-Judge框架,利用智能体自身评估其他智能体的性能,不仅关注最终结果,还能提供中间反馈,更全面准确地反映智能体的真实能力。该框架在DevAI基准测试中表现出色,成本效益显著,为智能体的自我改进提供了有力支持。
282 7
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
从深度学习到强化学习的旅程
【10月更文挑战第23天】从深度学习到强化学习的旅程
|
11月前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
网络协议 网络安全 网络架构
|
11月前
|
运维 供应链 安全
鲲鹏生态繁荣的“幕后推手”:虹信软件扛起“智改数转”大旗
虹信软件作为四川长虹在数字产业的旗舰企业,从2008年成立至今,一直致力于“数字企业”和“智慧城市”两大核心业务。通过内外并进的策略,虹信软件不仅推动了长虹集团的数字化转型,还为数百家企业提供了“软件+咨询+服务”的综合解决方案。近年来,虹信软件与鲲鹏生态深度合作,通过技术创新和应用落地,助力企业实现高效、安全的数字化转型,成为鲲鹏生态中的重要“布道者”。
416 0
|
存储 编译器
数据结构之顺序表的实现(详解!附完整代码)
数据结构之顺序表的实现(详解!附完整代码)
262 1