繁体   English   中英

向python函数添加异常

[英]add exceptions to python function

我有一个函数,将整数作为输入并以单词形式返回数字,它可以按我的要求工作,但30,40,50,60,70,8090除外,它返回90 = ninty zero ,因为该函数通过拆分数字来工作,如何删除为上述数字添加的零。 我的代码如下

d = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five',
     6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten',
     11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen',
     15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen',
     19: 'ninteen', 20: 'twenty',
     30: 'thirty', 40: 'fourth', 50: 'fifty', 60: 'sixty',
     70: 'seventy', 80: 'eighty', 90: 'ninty'}

def wordify(n):
    k = 1000
    m = k * 1000
    if n < 20:
        return d[n]
    if n < 100:
        if n % 100 == 0: return d[n]
        else: return d[n // 10 * 10] + ' ' + d[n % 10]
    if n < k:
        if n % 100 == 0: return d[n // 100] + ' hundred'
        else: return d[n // 100] + ' hundred ' + wordify(n % 100)
    if n < m:
        if n % k == 0: return wordify(n // k) + ' thousand'
        else: return wordify(n // k) + ' thousand, ' + wordify(n % k)


print wordify(90)

更改以下行:

if n % 100 == 0: return d[n]

if n % 10 == 0: return d[n]

解决了这个问题。 因为它将始终使用单个单词,并且只要它是10的倍数,就不会在其后添加零。

只需执行一次额外的操作即可纠正问题。 有时比尝试弄清楚如何避免它们更简单。

print wordify(90).replace(" zero","")

或:将wordify函数重命名为internal_wordify ,然后按以下方式定义wordify

def wordify(n):
   return internal_wordify(n).replace(" zero","")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM