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.

TypeError: el objeto ‘str’ no es llamable en el generador de Python

def gen_secs():
    x = 0
    while x < 60:
        yield x
        x += 1

def gen_minutes():
    x = 0
    while x < 60:
        yield x
        x += 1

def gen_hours():
    x = 0
    while x < 24:
        yield x
        x += 1

def gen_time():
    for x in gen_hours():
        for y in gen_minutes():
            for z in gen_secs():
                yield ("%d:%d:%d" % (x, y, z))

for gt in gen_time():
    print(gt)
    if gt == "01:23:45":
        break

La función gen_time no puede retornar el parámetro string por alguna razón. Hay un problema de sintaxis y no puedo encontrar el problema.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece haber un error de sintaxis en la declaración yield dentro de la función gen_time. En lugar de utilizar paréntesis, debería usar una coma para separar la cadena y las variables. La función gen_time corregida debería ser la siguiente:

    def gen_time():
        for x in gen_hours():
            for y in gen_minutes():
                for z in gen_secs():
                    yield ("%d:%d:%d" % (x, y, z))
    

    El uso de la sintaxis de cadena de formato y el operador de módulo nos permite reemplazar correctamente los marcadores de posición con los valores de x, y y z.

Comments are closed.