Python - AYUDA ERROR: UnboundLocalError: local variable 'x' referenced before assignment

 
Vista:
Imágen de perfil de Emanuel
Val: 36
Ha disminuido su posición en 3 puestos en Python (en relación al último mes)
Gráfica de Python

AYUDA ERROR: UnboundLocalError: local variable 'x' referenced before assignment

Publicado por Emanuel (11 intervenciones) el 28/08/2020 16:45:05
Buenas necesito ayuda con el siguiente codigo:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os
 
def get_clientes(file):
    try:
        f = open(file, 'r')
    except FileNotFoundError:
        return ('el fichero tiene error')
    else:
        directory = f.readlines()
        f.close()
        directory = dict([tuple(line.replace('\n', ' ').split(',')) for line in directory])
        return directory
 
def set_clientes(file,clientes):
    try:
        #os.remove(file)
        f = open(file, 'w')
    except FileNotFoundError:
        return ('¡El fichero ' + file + ' no existe!\n')
    else:
        for cli in clientes:
            f.write(str(cli) + ',' + clientes[cli] + '\n')
            f.close()
 
def menu():
    print ('MENÚ MANTENIMIENTO DE TELEFONOS')
    print('0 - SALIR')
    print('1 - LEER TELEFONOS DE LA BASE DE DATOS')
    print('2 - CONSULTAR UN TELEFONO')
    print('3 - AGREGAR UN TELEFONO')
    print('4 - MODIFICAR UN TELEFONO')
    print('5 - ELIMINAR UN TELEFONO')
    print('6 - GUARDAR BASE DE DATOS')
    option=input("INGRESE UNA OPCION"+'\n')
    return option
def main():
    while True:
        option=menu()
        if option=='0':
            break
        elif option=='1':
            clientes = get_clientes('telefonos.txt')
            print(clientes)
        elif option=='2':
            # leer los clientes del archivo
            clientes = get_clientes('telefonos.txt')
            client=(input("ingrese el  nombre del cliente a leer: "))
            if client in clientes:
                print('el cliente: ' + client + " existe en la base de datos")
                print('-------------------------------------------------------------------------------------')
                print('Cliente: ' + str(client) + '             Numero de telefono: ' + str(clientes[client]))#print (diccionario['cursos'][0])#se puede pedir posicion
                print('_____________________________________________________________________________________')
            else:
                #print("¡el: "+client+" No existe!")
                print('¡El cliente ' + str(client) + ' no existe!\n')
 
        elif option=='3':
            clientes=get_clientes('telefonos.txt')
            client=input('ingrese el nombre del cliente:  ')
            client1=input('ingrese el numero de telefono del cliente: ')
            clientes[client]=client1
            print('----------------------------------------------------------------------------------------')
            print('el cliente: '+client+ '        con numero de telefono: '+client1+' ha sido agregado con exito')
            print(clientes)
            print('----------------------------------------------------------------------------------------')
 
        elif option=='4':
            clientes=get_clientes('telefonos.txt')
            client=input('ingrese el nombre del cliente que desea cambiar: ')
            if client in clientes:
                client1=input('ingrese el nuevo numero')
                clientes[client]=client1
                print('------------------------------------------------------------------------------------')
                print('el numero del cliente: '+client+ 'a sido modificado con exito')
                print(clientes)
                print('------------------------------------------------------------------------------------')
            else:
                print('¡El cliente ' + str(client) + ' no existe!\n')
                print('ingrese un nombre de cliente valido')
        elif option=='5':
            clientes = get_clientes('telefonos.txt')
            client = input('ingrese el nombre del cliente que desea eliminar: ')
            if client in clientes:
                clientes.pop(client)
                print('------------------------------------------------------------------------------------')
                print(' cliente: ' + client + ' a sido eliminado con exito')
                print(clientes)
                print('------------------------------------------------------------------------------------')
            else:
                print('¡El cliente ' + str(client) + ' no existe!\n')
                print('Ingrese un nombre de cliente valido')
        elif option=='6':
            set_clientes('telefonos.txt',clientes)
            print(clientes)
        elif option=='0':
            break;
main()

me da el error UnboundLocalError: local variable 'clientes' referenced before assignment
alguien que pueda ayudarme? intente agregar al princicio de la opcion 6 global clientes pero me da error.
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: 388
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

AYUDA ERROR: UnboundLocalError: local variable 'x' referenced before assignment

Publicado por Daniel (111 intervenciones) el 28/08/2020 19:03:49
Hola,

Si se llama a la opción 6 sin cargar previamente los datos se produce el error. Una solución pude ser crear la variable con “client = None” al comienzo de la función main().

Saludos,
Daniel Rodríguez
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