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.

Cambiar la cantidad de bucles for (si solo hay un método) requeridos en una función en Python.

Aquí está mi código:

import math
import random

def inicio_de_func():
    characters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
    total = ""
    buscar = input("buscar una palabra específica: ")
    contar = 0
    longitud = int(input("ingrese la longitud de la palabra a buscar: "))
    for i in range(0,longitud):
        total += characters[0]

    print(f"probando palabras de longitud {longitud}")
    while total != "zzz":
        contar += 1
        if buscar in total:
            print(f"¡lo encontré! Esto tomó {contar} intentos.")
            return
        else:
            total = inc_word(total)
    print(f"No se pudo encontrar la palabra {buscar} en las palabras de longitud {longitud}. Esto tomó {contar} intentos.")
    return

def inc_word(word):
    last_char = word[-1]
    if last_char != 'z':
        return word[:-1] + characters[characters.index(last_char)+1]
    else:
        # carry over
        last_full_word = inc_word(word[:-1])
        return last_full_word + characters[0]

inicio_de_func()

Básicamente, quiero que el usuario pueda elegir una palabra con una longitud personalizada y hacer que la función la atraviese. El problema es que solo veo una opción que es verificar manualmente la cantidad de palabras y luego verificar cuántos de los bucles for son necesarios. Por ejemplo, este código solo funciona con palabras de 3 letras, ya que solo hay 3 bucles for. ¿Pero qué pasa si quisiera tener una palabra de 4 letras?

Cualquier ayuda sería apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que el código funcione para cualquier longitud de palabra, puede modificar la función para que tome la longitud de la palabra como parámetro y usar un bucle for para iterar a través de los caracteres para la longitud especificada. Aquí hay un ejemplo:

    import math
    import random
    
    def start_of_func(longitud_palabra):
        caracteres = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
        total = ""
        buscar = input("buscar una palabra específica: ")
        contar = 0
        for i in range(longitud_palabra):
            for x in caracteres:
                contar += 1
                palabra_actual = total + x
                print(palabra_actual)
                if buscar in palabra_actual:
                    print(f"¡Lo encontré! Esto tomó {contar} intentos.")
                    return
                else:
                    total = palabra_actual
                    # no se pudo encontrar
                    pass
    
    start_of_func(3) # busca palabras de 3 letras
    start_of_func(4) # busca palabras de 4 letras
    

    En esta función modificada, agregamos un parámetro longitud_palabra para especificar la longitud de la palabra a buscar. Luego usamos un bucle for sobre el rango de longitud_palabra para iterar a través de cada índice de carácter de la palabra. Concatenamos los caracteres para formar la palabra actual y comprobamos si la palabra objetivo es una subcadena de la palabra actual. Si lo es, salimos de los bucles e imprimimos los resultados. De lo contrario, actualizamos la variable total para realizar un seguimiento de los caracteres generados previamente y continuamos con el próximo índice de carácter.

Comments are closed.