【发布时间】:2016-05-26 19:01:17
【问题描述】:
我想编写一个程序,它接受 1 到 9999(含)之间的整数并以文字形式打印该值。例如,如果用户输入:
3421
那么程序应该打印:
three thousand four hundred twenty one
我的代码在下面,但它不起作用。
num=int(input('please enter an integer between 1 and 9999: '))
def int_to_en(num):
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' }
k = 1000
m = k * 1000
if (num < 20):
print(d[num])
if (num < 100):
if num % 10 == 0:
print(d[num])
else:
print(d[num // 10 * 10] + '' + d[num % 10])
if (num < k):
if num % 100 == 0:
print(d[num // 100] + ' hundred')
else:
print(d[num // 100] + ' hundred ' + int_to_en(num % 100))
if (num < m):
if num % k == 0:
print(int_to_en(num // k) + ' thousand')
else:
print(int_to_en(num // k) + ' thousand, ' + int_to_en(num % k))
【问题讨论】:
-
具体是什么不起作用?
-
我认为代码格式在您的原始帖子(根本没有格式)和@CactusWoman 的编辑之间搞砸了。这些
if真的在函数内部吗? -
int_to_en没有初始调用 -
你永远不会返回任何东西,所以你不能使用递归。
-
StackOverflow 不是编码或教程服务。当你澄清你的问题陈述时,我们需要你把额外的信息放在问题的主体中——而不是在下面的评论中。
标签: python