'''
テキストエディタに書いて、ターミナル(Linux)で実行しています
エラーの結果がこれでした
Traceback (most recent call last):
File "17.py", line 71, in <module>
result += one_ninteen_num[ i ]
IndexError: list index out of range
ですので一番下から2行目のコードでインデックスの範囲を超えて参照しているのが原因
だと思うのですが、プログラムを何度見直してもどこに問題があるのかわかりません。
どこに問題があるのでしょうか?
問題17「数字の文字数」
1から5までの数字を英単語で書けばone、two、three、four、fiveであり、全部で3 + 3 + 5 + 4 + 4 = 19の文字が使われている。
では1から1000(千)までの数字をすべて英単語で書けば、全部で何文字になるか。
注:空白文字やハイフンを数えないこと。例えば、342(three hundred and forty-two)は23文字、115(one hundred and fifteen)は20文字と数える。なお、「and」を使用するのは英国の慣習。
'''
python
1one_ten = ['dummy', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'] 2eleven_nineteen = ['dummy', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'] 3twenty_ninety = ['dummy', 'dummy', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'] 4hundred = ['hundred'] 5thousand =['thousand'] 6 7one_ten_num = [] 8eleven_ninteen_num = [] 9twenty_ninety_num = [] 10hundred_num = [] 11thousand_num = [] 12 13 14#文字列の長さを図る(下準備) 15#1-10 16for i in one_ten: 17 one_ten_num.append(len(i)) 18#11-19 19for i in eleven_nineteen: 20 eleven_ninteen_num.append(len(i)) 21 22#1-19 23one_ninteen_num = one_ten_num + eleven_ninteen_num 24 25#20-90..10 26for i in twenty_ninety: 27 twenty_ninety_num.append(len(i)) 28#100 29hundred_num = len(hundred) 30#1000 31thousand_num = len(thousand) 32 33#此処からメインプログラム 34 35result = 0 36standard_value = 1000 37 38 39for i in range(1, standard_value + 1 ): 40 41 if i == 1000: # 1000の場合足して終了 42 result += thousand_num 43 break 44 45 if i >= 100: # 100以上の場合 46 result += hundred_num 47 48 a = one_ninteen_num[ int( str( i )[2])] 49 result += a 50 i -= 100*(int( str( i )[2])) 51 52 if not i: # 端数がある場合 53 result += len('and') 54 55 if 0 < i < 20: # 1から19までの場合 56 result += one_ninteen_num[ i ] 57 58 elif 20 < i < 100: # 20から99までの場合 59 a = twenty_ninety_num[int( str( i )[1])] 60 result += a 61 i -= 10*(int( str( i )[1])) 62 63 if i > 1: 64 result += one_ninteen_num[ i ] 65 66print( result )
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/05 02:18