【ProjectEuler】17.数字的字母有几个数字?

求1-1000的所有的数,转为英文单词后,它们的字母共有多少个

不计算空格和连字符

例如

42 (three hundred and forty-two)共有23个字母
115 (one hundred and fifteen) 有20个字母

python代码如下
a = {0: '', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'}
b1 = {10: 'ten', 11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', 15: 'fifteen', 16: 'sixteen',
      17: 'seventeen',
      18: 'eighteen', 19: 'nineteen'}
b2 = {2: 'twenty', 3: 'thirty', 4: 'forty', 5: 'fifty', 6: 'sixty', 7: 'seventy', 8: 'eighty', 9: 'ninety'}
s = ''
for i in range(1, 1000):
    t = i // 100
    if t > 0:
        if t*100==i:
            s = s + a[t] + 'hundred'
        else :s = s + a[t] + 'hundredand'
    if i % 100 < 20:
        if i % 100 < 10:
            s = s + a[i % 100]
        else:
            s = s + b1[i % 100]
    else:
        t1 = i % 10
        t2 = i % 100 // 10
        s = s + b2[t2] + a[t1]
print(s)
print(len(s)+len('onethousand'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值