es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo verificar si una entrada en tkinter tiene uno o más ceros?

Soy un traductor de documentos de TI en español. Traduce lo siguiente al español. No traduzca el código ni la salida en markdown.

Acabo de empezar a programar. Quiero hacer una calculadora simple de la ley de Ohm. Me está resultando difícil comprobar si la entrada está vacía o si tiene uno o más ceros. ¿Cómo puedo verificar si tiene uno o más ceros?

from tkinter import *
import math as m

def doMath():
   U = entryU.get()
   I = entryA.get()
   if I == "0" or \
      I == "" or \
      U == "":

      labelR.config(text="Error", bg= "red")
   else:
      R = float(U)/float(I)
      labelR.config(text="Resistance: {:.2f}\u03A9".format(R), bg="white")

frame = Tk()
entryU = Entry(frame)
entryU.place (x=95, y= 60, width= 250, height =30)

entryA= Entry(frame)
entryA.place(x=95, y=100, width= 250, height=30)

buttonMath = Button(frame, text="R",command = doMath)
buttonMath.place(x=360, y=70, width=120, height=50)

labelR = Label (frame, text="Resistance: ")
labelR.place(x=10, y= 145)

frame.mainloop()

Esto es lo que tengo, pero en cuanto tengo “00” en mi cadena, esto evidentemente no funcionará y si intento simplemente verificar si I == 0 no funcionará porque no puedo comparar una cadena con un entero (supongo). También quiero poder calcular con números decimales. ¡Gracias por cualquier ayuda!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para verificar si la entrada contiene uno o más ceros, puede utilizar el operador “in” para ver si “0” está en la cadena. Aquí está una función doMath actualizada que verifica tanto las cadenas vacías como las cadenas con “0”.

    def doMath():
       U = entradaU.get()
       I = entradaA.get()
       if not U or not I or "0" in I:
          labelR.config(text="Error", bg= "red")   
       else:
          R = float(U)/float(I)
          labelR.config(text="Resistencia: {:.2f}\u03A9".format(R), bg="white")
    

    Esto comprobará si U o I es una cadena vacía (usando el valor verdadero de las cadenas no vacías) y también si “0” está en I. Para calcular con números decimales, simplemente ingréselos en los campos de texto como lo haría con números enteros (por ejemplo, “2.5”). La función float manejará la conversión de cadena a número de punto flotante.

Comments are closed.