2017-03-19 7 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'을 얻고있다,하지만 그들은 누군가가 DICT에 x 키를 넣어 잊었 때문에 단지 있었다 약 KeyError: x,합니다 (''없이), 및 ''을했던 사람이었다.

감사합니다!

답변

0

누락 된 키가 '2', 즉 문자열이라는 오류 메시지가 표시됩니다. 2과 같이 정수를 키로 사용합니다. 키를 문자열로 만들거나 문자열 데이터를 int로 변환하여 조회를 수행 할 수 있습니다.

+0

'num_i = int (num)'을 만들었지 만'34 '을 입력하려고했을 때'TypeError :'int '객체에'__getitem __ '속성이 없습니다. – Zylbrad

+0

그런 다음'int)', 당신은'int [num]'(나는 생각한다). –

+0

그건 지금 내 코드 다 : http://imgur.com/a/NiA3f – Zylbrad

0

KeyError : '2'입니다. 당신이 혼란스러워했다고 생각합니다. number2 텍스트 코드가 잘못되었습니다.

: 대신에 '수십 [NUM의 [0]]' ' 수십 [INT (STR (NUM) [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]]