2015-05-02 2 views
-1

Мне нужно преобразовать из строки в int, но я не могу использовать int() или float(). Это код, который я думал использовать, но он не работает, потому что R[0] также является строкой.преобразовать строку в int, не используя int() в python

код работает, если я изменю

num = R[longitud-longitud] 

к:

num = float(R[longitud-longitud]) 

Мой код:

def string2num_aux(R,longitud,F): 
    if longitud == 0: 
     return F 
    else: 
     num = R[longitud-longitud] 
     val = num*10**(longitud-1) 
     return string2num_aux(R[1:],longitud-1,F+val) 
+1

Почему нельзя использовать использовать ИНТ или плавать? – Zhanger

+0

Почему вам нужно 'longitud - longitud', разве это не' 0'? – eLRuLL

+0

Я не могу использовать его, потому что я нахожусь в колледже, изучая питон, и идея заключается в использовании рекурсивности. –

ответ

0

вы можете использовать ord функцию, возвращают целое число, представляющее точку кода Unicode от характера

def string2num_aux(R,longitud,F): 
    if longitud == 0: 
    return F 
    else: 
    num = R[0]          #longitud-longitud is unneccesary 
    val = (ord(num)-ord('0'))*10**(longitud-1)  #Line change 
    return string2num_aux(R[1:],longitud-1,F+val) 

string2num_aux("12345",5,0) 

вы получите

код улучшения:

def string2num_aux(R): 
    if len(R) == 0: 
    return 0 
    else: 
    num = R[0] 
    val = (ord(num)-ord('0'))*10**(len(R)-1) 
    return val + string2num_aux(R[1:]) 

string2num_aux("12345") 

ord без, я использовать словарь

d={"0":0, "1":1, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7, "8":8, "9":9} 

def string2num_aux(R): 
    if len(R) == 0: 
    return 0 
    else: 
    num = R[0] 
    val = d[num]*10**(len(R)-1) 
    return val + string2num_aux(R[1:]) 

string2num_aux("12345") 
+0

Прошу прощения, но я не уверен, могу ли я использовать встроенную функцию «ord», но спасибо –

+0

@ KendallGonzález я добавляю код без ордера ;-) –

+0

Вот что мне нужно, спасибо !!! –

Смежные вопросы