Python en español (Principiantes)
Статистикаhttps://www.facebook.com/groups/912523932450311/
- Последний пост
- 30 авг. 2024 г.
- Последнее чтение
- 14 авг.
- Постов за неделю
- 0
- Всего постов
- 21
- Тип
- открытый
- Язык
- испанский
- Категория
- Технологии
- В каталоге с
- 13 авг.
- 1/24сутки в ленте
- —
- 1/48двое суток
- —
- 1/72трое суток
- —
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
без подписи
без подписи
без подписи
La novela interactiva...mi solución: Tener las páginas en archivos como 1.txt, 2.txt, 3.txt, etcétera Tener un archivo con las opciones.json Iniciar con la página 1, abriendo el archivo 1.txt y mostrarlo. Después, buscar en las opciones la página como key, y mostrar el value, diccionario que contiene una descripción de la elección y la página que deberá abrir. Repetir ...
без подписи
без подписи
https://pastebin.com/u/uclagyl
if y+i >= int_lineas or x+i >=int_lineas: break if lst_tabla[y+i][x+i] == "*" or str_letra == lst_tabla[y+i][x+i]: continue break else: lst_disponibles[y][x][7] = 1 # Obtener las coordenadas (y, x, z) de los elementos que son iguales a 1 coordenadas = [(y, x, z) for y, lista in enumerate(lst_disponibles) for x, sublista in enumerate(lista) for z, valor in enumerate(sublista) if valor == 1] while True: try: y,x,z =random.choice(coordenadas) # Obtiene al azar una coordenada y, x de la tabla y z una dirección disponible break except: pass for i,str_letra in enumerate(str_palabra): # Ahora si, según la orientación elegida, se coloca en la tabla if z == 0: lst_tabla[y][x+i] = str_letra # DERECHA elif z == 1: lst_tabla[y][x-i] = str_letra # IZQUIERDA elif z == 2: lst_tabla[y-i][x] = str_letra # ARRIBA elif z == 3: lst_tabla[y+i][x] = str_letra # ABAJO elif z == 4: lst_tabla[y-i][x-i] = str_letra # ARRIBA IZQUIERDA elif z == 5: lst_tabla[y-i][x+i] = str_letra # ARRIBA DERECHA elif z == 6: lst_tabla[y+i][x-i] = str_letra # ABAJO IZQUIERDA elif z == 7: lst_tabla[y+i][x+i] = str_letra # ABAJO DERECHA def fun_coloca_palabras(): """ Función que recorre la lista de palabras y llama a fun_posiciones para acomodarla en la tabla Crea la sopa de letras """ for str_palabra in lst_palabras: fun_posiciones(str_palabra.upper()) # RELLENAR LETRAS POR ASTERISCOS for y in range(int_lineas): for x in range(int_lineas): if lst_tabla[y][x] == "*": lst_tabla[y][x] = random.choice(string.ascii_letters).upper() def fun_imprime_tabla(): """ Imprime la sopa de letras """ for i, lst_ in enumerate(lst_tabla): print(*lst_,f"\t{lst_palabras[i] if i <len(lst_palabras) else ''}") if name == "main": int_lineas = 13 # Tamaño de la tabla # Inicializa Tablero de la sopa de letras con puros * lst_tabla = [ ["*" for i in range(int_lineas)] for i in range(int_lineas) ] # fun_imprime_tabla() lst_palabras = ["LUIS", "ANTONIO", "URBALEJO", "CONTRERAS", "PYTHON", "ESPAÑOL", "PRINCIPIANTES", "FACEBOOK", "GRUPO", "WHATSAPP","TELEGRAM", "DISCO", "computadora"] fun_coloca_palabras() fun_imprime_tabla()
# SOPA DE LETRAS import random import string def fun_posiciones(str_palabra): """Función que busca todas las posiciones posibles en que se pueda acomodar una palabra en la tabla de la sopa de letras (lst_tabla) Args: str_palabra (str): Es la palabra a encontrar las posiciones """ # Crear lista de listas de posiciones disponibles para la palabra... # Cada elemento (coordenadas lst[y][x]) se inicializan con la lista [0,0,0,0,0,0,0,0] # Corresponden a NO DISPONIBLEs hacia: [der, izq, arr, aba, arr izq, arr der, aba izq, aba der] lst_disponibles = [ [[0,0,0,0,0,0,0,0] for i in range(int_lineas)] for i in range(int_lineas) ] for y in range(int_lineas): # Barrido de la coordenada y... las líneas de la tabla for x in range(int_lineas): # Barrido de la coordenada x... las columnas de la tabla # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia la DERECHA for i,str_letra in enumerate(str_palabra): # Recorrer palabra, letra por letra if x+i >= int_lineas: break # Si ha llegado al fin de columnas, NO es disponible, termina esa coordenada # Lo que sigue es si en esa casilla hay un * o si la letra es igual a la que ya existe en la tabla, podemos continuar con la sgte letra if lst_tabla[y][x+i] == "*" or str_letra == lst_tabla[y][x+i]: continue break # Si no es * ni es la misma letra entonces NO es disponible y terminamos else: lst_disponibles[y][x][0] = 1 # Si termina el for (recorrió toda la palabra) entonces SI es disponible # Revisar si a partir de lst_tabla[y][x] es disponible hacia la IZQUIERDA for i,str_letra in enumerate(str_palabra): if x-i < 0: break if lst_tabla[y][x-i] == "*" or str_letra == lst_tabla[y][x-i]: continue break else: lst_disponibles[y][x][1] = 1 # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia ARRIBA for i,str_letra in enumerate(str_palabra): if y-i < 0: break if lst_tabla[y-i][x] == "*" or str_letra == lst_tabla[y-i][x]: continue break else: lst_disponibles[y][x][2] = 1 # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia ABAJO for i,str_letra in enumerate(str_palabra): if y+i >= int_lineas: break if lst_tabla[y+i][x] == "*" or str_letra == lst_tabla[y+i][x]: continue break else: lst_disponibles[y][x][3] = 1 # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia ARRIBA IZQUIERDA for i,str_letra in enumerate(str_palabra): if y-i < 0 or x-i <0: break if lst_tabla[y-i][x-i] == "*" or str_letra == lst_tabla[y-i][x-i]: continue break else: lst_disponibles[y][x][4] = 1 # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia ARRIBA DERECHA for i,str_letra in enumerate(str_palabra): if y-i < 0 or x+i >= int_lineas: break if lst_tabla[y-i][x+i] == "*" or str_letra == lst_tabla[y-i][x+i]: continue break else: lst_disponibles[y][x][5] = 1 # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia ABAJO IZQUIERDA for i,str_letra in enumerate(str_palabra): if y+i >= int_lineas or x-i <0: break if lst_tabla[y+i][x-i] == "*" or str_letra == lst_tabla[y+i][x-i]: continue break else: lst_disponibles[y][x][6] = 1 # Revisar si a partir de lst_tabla[y][x] es disponible str_palabra hacia ABAJO DERECHA for i,str_letra in enumerate(str_palabra):
SOPA DE LETRAS.... La manera de cómo lo resolvería, creo que sería algo así: - Crear una matriz (lista de listas) lst_tabla, del tamaño definido, pero cada elemento debe ser un espacio, o un asterístico... o cualquier valor que no sea una letra.. ... serán todos * - Las palabras a buscar en una lista lst_palabras - Una función que se pase una palabra de lst_palabras y que recorra toda la lst_tabla elemento por elemento, linea por linea. Buscando todas las posibles posiciones de esa palabra iniciando desde esa posición fila, columna, las llamaré x,y o posx, posy... Tengo que guardar resultados de cada x,y en otra matriz lst_disponibles[ y ][ x ] = [ 1,0, 0, 1, 0, 0, 0, 1 ] que significan True/False de [ der, izq, arr, aba, arr izq, arr der, aba izq, aba, der ] (o cómo quieras interpretar hacia dónde puede "caber" la palabra. Para saber si es disponible, por ejemplo, a la derecha, La palabra será recorrida letra por letra tratando de "ponerla" en la casilla que le corresponda siempre y cuando: 1. Exista la casilla (no sobrepase el límite de la tabla) 2. La casilla tenga un * (o lo que le hayan definido) 3. Si ya hay una letra, debe ser igual a la que le corresponde Será disponible ( 1 ) si termina el barrido de la palabra, de lo contrario ( 0 ) Obtenida la lst_disponibles de ESA PALABRA, tomar una coordenada aleatoria y de esa lista [ 1,0, 0, 1, 0, 0, 0, 1 ] obtener aleatoriamente la dirección disponible ( las que sean 1) y mandarla a otra función que la ponga en lst_tabla - Al final recorrer toda lst_tabla de nuevo y donde vea un * debe poner aleatoriamente una letra del abecedario
Pues bien, ya se puede utilizar la función Para el nombre, tener opción de solo letras Para edad, tener un rango para confirmación, aceptar un solo caracter
Parte de lo modificado... Si el tipo de retorno es numérico y no se ha capturado nada, pone un valor de 0 Posiblemente cambie ese nombre de variable "str_mensaje" y/o "str_capturado"...
modificado fun_input para pasar parámetros de telas a aceptar y teclas a omitir... Si el tipo de retorno es numérico y no tiene definidas teclas aceptar, entonces str_aceptar serán solo números
Por cierto, esto es todo lo que hace la función fun_SO_es_windows() Regresar True si se ejecuta en windows
Iniciando (de nuevo) la función fun_input... por lo pronto solo hace lo que el input... Le iré añadiendo parámetros como el tipo que debe regresar, valor por defecto, teclas a omitir o aceptar, tiempo de espera, tipo password (*), etcétera Espero les interese, saludos
Esto es lo que puede hacer mi función de captura..es más compleja...
без подписи
без подписи
без подписи
без подписи