
¿Por qué falla mi código?
Publicado por Jhon (17 intervenciones) el 11/10/2014 19:16:55
Cordial saludo:
Mi nombre es Jhon, soy técnico electrónico y no tengo ni idea de programación. Este es mi primer lenguaje y mi experiencia no pasa de unas... 3 semanas
Estoy haciendo una pequeña aplicación para calcular todo lo necesario para construir un transformador (Número de vueltas en las bobinas, calibre de los alambres, amperajes, tamaño del núcleo, etc).
La primer versión es funcional, en modo consola, pero funcional. Ahora, para aprender cosas nuevas, estoy trabajando con Tkinter en una GUI.
El caso es que para los cálculos necesito unos datos que debe introducir el usuario. Uno de ellos es el Voltaje AC. Pero el usuario no siempre sabe el voltaje AC (Tampoco es difícil saberlo, pero para que el programa sea a prueba de dummies) sino que conoce el voltaje DC que necesita la carga a la que irá conectada el transformador.
En modo consola lo resolví pidiendo al usuario los dos datos AC y DC, pero pidiendo que escoja uno u otro y deje el otro en blanco:
Con eso es suficiente. En la versión con GUI, quise que el usuario ingresara el voltaje (entry_3) y luego escogiera en un checkbutton si se refería a voltaje AC o DC (eligeAC o eligeDC). Los dos checkbutton tienen onvalue=1 y offvalue=0.
Mi planteamiento era:
El caso es que cuando oprimo el botón para que una Label me muestre los resultados, me avisa que las variables no están definidas. Si escojo AC me dice "AC no defined" y si calculo con DC me dice "DC no defined":
NameError: name 'AC' is not defined
Otra cosa que me he dado cuenta ahora es que la variable vout es un string, por lo que una vez resuelva lo de AC y DC me va a dar un error.
En modo consola convierto el string AC en float:
AC=float(AC)
y funciona. Pero intento vout=float(vout) y me dice que no puedo convertir strings a float.
¿Podría alguien ayudarme con esto por favor?
Muchas gracias de antemano.
Mi nombre es Jhon, soy técnico electrónico y no tengo ni idea de programación. Este es mi primer lenguaje y mi experiencia no pasa de unas... 3 semanas

Estoy haciendo una pequeña aplicación para calcular todo lo necesario para construir un transformador (Número de vueltas en las bobinas, calibre de los alambres, amperajes, tamaño del núcleo, etc).
La primer versión es funcional, en modo consola, pero funcional. Ahora, para aprender cosas nuevas, estoy trabajando con Tkinter en una GUI.
El caso es que para los cálculos necesito unos datos que debe introducir el usuario. Uno de ellos es el Voltaje AC. Pero el usuario no siempre sabe el voltaje AC (Tampoco es difícil saberlo, pero para que el programa sea a prueba de dummies) sino que conoce el voltaje DC que necesita la carga a la que irá conectada el transformador.
En modo consola lo resolví pidiendo al usuario los dos datos AC y DC, pero pidiendo que escoja uno u otro y deje el otro en blanco:
1
2
3
4
5
6
7
8
9
10
11
12
print("""Introduzca el voltaje AC a la salida o el DC si es el que conoce.
No introduzca ambos datos.""" )
ac = input("Voltaje AC: " )
dc = input("Voltaje DC: " )
ac1 = bool(ac)
dc1 = bool(dc)
if ac1 == True and dc1 == False:
ac2 = float(ac)
dc2 = ac2 * 1.4142
if ac1 == False and dc1 == True:
dc2 = float(dc)
ac2 = dc2 / 1.44142
Con eso es suficiente. En la versión con GUI, quise que el usuario ingresara el voltaje (entry_3) y luego escogiera en un checkbutton si se refería a voltaje AC o DC (eligeAC o eligeDC). Los dos checkbutton tienen onvalue=1 y offvalue=0.
Mi planteamiento era:
1
2
3
4
5
6
7
8
9
#Calcular el voltaje de salida sea AC o DC
vout = entry_3.get()
def escoge():
if eligeAC==1 and eligeDC==0:
AC=vout
DC=vout*1.4142
if eligeDC==1 and eligeAC==0:
DC=vout
AC=vout/1.4142
NameError: name 'AC' is not defined
Otra cosa que me he dado cuenta ahora es que la variable vout es un string, por lo que una vez resuelva lo de AC y DC me va a dar un error.
En modo consola convierto el string AC en float:
AC=float(AC)
y funciona. Pero intento vout=float(vout) y me dice que no puedo convertir strings a float.
¿Podría alguien ayudarme con esto por favor?
Muchas gracias de antemano.
Valora esta pregunta


0