Python - Pasar String a numero real en python 3

 
Vista:

Pasar String a numero real en python 3

Publicado por mat (5 intervenciones) el 08/04/2019 04:54:51
Hola, me pidieron hacer un algoritmo en python para pasar de un string a numero real, con las siguientes limitaciones:

⦁ No debe usar la función int(x)
⦁ Debe considerar que el formato sea el correcto:
(+/-)ParteEntera.ParteDecimal
⦁ No debe usar listas

y me dieron los siguientes hint:

Hint: len(string) entrega el largo de la cadena de caracteres.
Hint2: Use:
for letra in palabra:

lo he pensado mucho y sinceramente no le encuentro ni pies ni cabeza, por eso recurro a este foro con la esperanza de recibir ayuda, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 427
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Pasar String a numero real en python 3

Publicado por Daniel (98 intervenciones) el 08/04/2019 22:05:19
Hola,

Solamente han pedido que implementes un conversor de cadena de texto a real. Algo como lo siguiente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
def convert_chart_to_real(value):
    # Elimina espacions en blanco
    value = value.strip()
 
    # Calcula el signo
    positive = True
 
    if value.find('-') == 0:
        positive = False
        value = value[1:]
    elif value.find('+') == 0:
        value = value[1:]
 
    # Constante para convertis
    char2int = {'0':0,
                '1':1,
                '2':2,
                '3':3,
                '4':4,
                '5':5,
                '6':6,
                '7':7,
                '8':8,
                '9':9}
 
    # Continua solo si es valido
    valid_characters = '1234567890.,'
 
    if all(char in valid_characters for char in value):
        result = 0
 
        sep = value.find('.')
 
        if sep == -1:
            sep = len(value) - 1
 
        for i in range(len(value)):
            if (i < sep):
                result += char2int[value[i]] * 10 ** (sep - i - 1)
            elif (i > sep):
                result += char2int[value[i]] * 10 ** (sep - i)
 
        if positive:
            return result
        else:
            return -result
 
    else:
        return None

Saludos,
Daniel Rodríguez.
Analytics Lane
Python en Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar