[英]add exceptions to python function
我有一個函數,將整數作為輸入並以單詞形式返回數字,它可以按我的要求工作,但30,40,50,60,70,80
和90
除外,它返回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.