2017-03-19 14 views
0

これは私のnumber2textコードです:パイソン - KeyError例外: 'X'

num = raw_input "insert an int" 
p = len(num) 
if p == 1: 
    print numbers[num] 
if p == 2: 
    print tens[num[0]] + numbers_teeens[num[1]] 
if p == 3: 
    print numbers_hundreds[num[0]] + tens[num[1]] + numbers_teeens[num[2]] 
if p == 4: 
print numbers_thousands[num[0]]+ numbers_hundreds[num[1]] + tens[num[2]] + numbers_teeens[num[3]] 
if p == 5: 
print numbers_ten_thousands[num[0]] + numbers_thousands[num[1]]+ numbers_hundreds[num[2]] + tens[num[3]] + numbers_teeens[num[4]] 
if p == 6: 
print numbers_hundred_thousands[num[0]] + numbers_ten_thousands[num[1]] + numbers_thousands[num[2]]+ numbers_hundreds[num[3]] + tens[num[4]] + numbers_teeens[num[5]] 

そして、これらは私の辞書です:私の入力は、例えば32ある場合

numbers = {1: 'One', 2: 'Two', 3: 'Three', 4: 'Four', 5: 'Five', 6: 'Six', 7: 'Seven', 8: 'Eight', 9: 'Nine'} 
tens = {1: 'Ten', 2: 'Twenty', 3: 'Thirty', 4: 'Forty', 5: 'fifty', 6: 'Sixty', 7: 'Seventy', 8: 'Eighty', 9: 'Ninety'} 
numbers_teens = {1: 'Eleven', 2: 'Twelve', 3: 'Thirteen', 4: 'Fourteen', 5: 'Fifteen', 6: 'Sixteen', 7: 'Seventeen', 8: 'Eighteen', 9: 'Nineteen'} 
numbers_teeens = {0 : '', 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'} 
numbers_hundreds = {} 
numbers_thousands = {} 
numbers_ten_thousands = {} 
numbers_teen_thousands = {} 
numbers_hundred_thousands = {} 

#Creates lists 
for k,v in numbers.items(): 
    numbers_hundreds.update({k: v.title() + ' Hundred'}) 
    numbers_thousands.update({k: v.title() + ' Thousand and'}) 

for k1,v1 in tens.items(): 
    numbers_ten_thousands.update({k1: v1.title()}) 

for kt,vt in numbers_teens.items(): 
    numbers_teen_thousands.update({kt: vt.title() + ' Thousand'}) 

for k2,v2 in numbers_hundreds.items(): 
    numbers_hundred_thousands.update({k2: v2.title() + ' Thousand'}) 

。私はいくつかの他の記事を見て、このエラー

KeyError: '2'を取得していますが、彼らは誰かが辞書でxキーを置くことを忘れてしまったので、のみだっただけについてKeyError: x、(''なし)、および''を持っていたものでした。

ありがとうございました!

答えて

0

エラーメッセージには、欠落しているキーが'2'、つまり文字列であることが示されています。あなたは2のような整数をキーとして持っています。キーを文字列として作成して開始するか、文字列データをintに変換してルックアップを行うことができます。

+0

私は 'num_i = int(num)'を作成しましたが、 '34'を入力しようとすると' TypeError: 'int'オブジェクトに属性 '__getitem __' 'がありません。 – Zylbrad

+0

次に、 ) '、あなたは' int [num] 'をしました(私は思います)。 –

+0

それは今私のコードです:http://imgur.com/a/NiA3f – Zylbrad

0

KeyError: '2'です。 あなたは混乱していると思います。 number2textコードが間違っています。

:あなたが一緒に2つのテキストを置く場合は、 '十[numが[0]]' ' 十[int型(STR(数値)[0])]' 考える

はそうあなたが得る代わりに

numbers = {1: 'One', 2: 'Two', 3: 'Three', 4: 'Four', 5: 'Five', 6: 'Six', 7:   'Seven', 8: 'Eight', 9: 'Nine'} 
tens = {1: 'Ten', 2: 'Twenty', 3: 'Thirty', 4: 'Forty', 5: 'fifty', 6: 'Sixty', 7: 'Seventy', 8: 'Eighty', 9: 'Ninety'} 
numbers_teens = {1: 'Eleven', 2: 'Twelve', 3: 'Thirteen', 4: 'Fourteen', 5: 'Fifteen', 6: 'Sixteen', 7: 'Seventeen', 8: 'Eighteen', 9: 'Nineteen'} 
numbers_teeens = {0 : '', 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'} 
numbers_hundreds = {} 
numbers_thousands = {} 
numbers_ten_thousands = {} 
numbers_teen_thousands = {} 
numbers_hundred_thousands = {} 

#Creates lists 
for k,v in numbers.items(): 
    numbers_hundreds.update({k: v.title() + ' Hundred'}) 
    numbers_thousands.update({k: v.title() + ' Thousand and'}) 

for k1,v1 in tens.items(): 
    numbers_ten_thousands.update({k1: v1.title()}) 

for kt,vt in numbers_teens.items(): 
    numbers_teen_thousands.update({kt: vt.title() + ' Thousand'}) 

for k2,v2 in numbers_hundreds.items(): 
    numbers_hundred_thousands.update({k2: v2.title() + ' Thousand'}) 

num = raw_input "insert an int" 
p = len(num) 
if p == 1: 
    print int(numbers[int(str(num))] 
if p == 2: 
    print tens[int(str(int(str(num)))[0])] + numbers_teeens[int(str(num))[1]] 
if p == 3: 
    print numbers_hundreds[int(str(num))[0]] + tens[int(str(num))[1]] + numbers_teeens[int(str(num))[2]] 
if p == 4: 
    print numbers_thousands[int(str(num))[0]]+ numbers_hundreds[int(str(num))[1]] + tens[int(str(num))[2]] + numbers_teeens[int(str(num))[3]] 
if p == 5: 
    print numbers_ten_thousands[int(str(num))[0]] + numbers_thousands[int(str(num))[1]]+ numbers_hundreds[int(str(num))[2]] + tens[int(str(num))[3]] + numbers_teeens[int(str(num))[4]] 
if p == 6: 
    print numbers_hundred_thousands[int(str(num))[0]] + numbers_ten_thousands[int(str(num))[1]] + numbers_thousands[int(str(num))[2]]+ numbers_hundreds[int(str(num))[3]] + tens[int(str(num))[4]] + numbers_teeens[int(str(num))[5]] 
関連する問題