“问题17:如果数字1到5用单词写出:1、2、3、4、5,则 总共使用了3 + 3 + 5 + 4 + 4 = 19个字母。
如果用文字写出从1到1000(含1000)之间的所有数字, 将使用多少个字母?
注意:请勿计算空格或连字符。 例如,342(三百四十二)包含23个字母,而115(一百一十五)包含20个字母。 写出数字时使用“和”符合英国的用法。”
initDict1 = {1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine",
11: "Eleven", 12: "Twelve", 13: "Thirteen", 14: "Fourteen", 15: "Fifteen", 16: "Sixteen", 17: "Seventeen",
18: "Eighteen", 19: "Nineteen",
10: "Ten", 20: "Twenty", 30: "Thirty", 40: "Forty", 50: "Fifty", 60: "Sixty", 70: "Seventy", 80: "Eighty",
90: "Ninety", 100: "Hundred", 1000: "Thousand"}
for num in range(1, 1001):
if num < 101:
if num not in initDict1:
newNum = num // 10 * 10
initDict1[num] = initDict1[newNum] + initDict1[num % 10]
# print(num, " : ", initDict1[newNum] + initDict1[num % 10])
elif num < 1000:
newNum = num // 100
newNum1 = (newNum * 100) // newNum
if num % 100 != 0:
initDict1[num] = initDict1[newNum] + initDict1[newNum1] + 'And' + initDict1[num % 100]
# print(num, " : ", initDict1[newNum] + initDict1[newNum1] +'And'+ initDict1[num % 100])
else:
initDict1[num] = initDict1[newNum] + 'And' + initDict1[newNum1]
# print(num, " : ", initDict1[newNum] + 'And' +initDict1[newNum1])
wordCount = 0
for num in initDict1.values():
wordCount += len(num)
print(wordCount)
我得到的答案是 21142 ,所需的答案是 21124 。
我不知道我在做什么错,我知道回答后会变得很蠢。
答案 0 :(得分:0)
如果您打印结果,这是您的代码中的问题:
800 : EightAndHundred