|
Mostrar Temas
|
Páginas: [1] 2 3
|
2
|
Programación / Scripting / Primeros pasos con programación orientada a objetos(POO)
|
en: 27 Diciembre 2022, 14:40 pm
|
Esta vez estoy decidido a aprender la POO y no voy a continuar con el próximo tema hasta aprender por lo menos lo básico.- Primero dejo un programita para demostrarle que algo pude lograr.- class Super: def __init__(self, codigo, nombre, precio): self.codigo = codigo self.nombre = nombre self.precio = precio def __str__(self): return f"{self.codigo} {self.nombre} {self.precio}" if __name__ == '__main__': tomate = Super(125, "Arcor tomate perita lata x 380 grs.", 129.50) print(tomate)
import codecs import os def principal(): lemario = leer_lemario() palabra = True mostrar = [] while palabra: palabra = input("\n Ingrese la palabra a corregir...: ") if buscar_palabra(palabra, lemario) == True: print(f'\n La palabra "{palabra}" existe en el diccionario y es correcta.') elif len(palabra) == 0: break else: for lema in lemario: posibles = distancia(lema, palabra) if int(posibles) == 1: mostrar.append(lema) if len(mostrar) == 0: print("\n No se encontraron palabras parecidas...") else: print("\n ===== Posibles palabras correctas =====") cont = 0 for mos in mostrar: print(" ", mos, end=" - ") cont += 1 if cont == 5: print(" ") cont = 0 print("\n =======================================") mostrar.clear() def buscar_palabra(palabra, lemario): for lema in lemario: if palabra == lema: return True return False def leer_lemario(): lemario = [] with codecs.open('Ortografia.txt', 'r', encoding='utf-8') as archivo: for linea in archivo: linea = linea.strip() if len(linea) > 0: lemario.append(linea) return lemario def distancia(str1, str2): posibles = [] d=dict() for i in range(len(str1)+1): d[i]=dict() d[i][0]=i for i in range(len(str2)+1): d[0][i] = i for i in range(1, len(str1)+1): for j in range(1, len(str2)+1): d[i][j] = min(d[i][j-1]+1, d[i-1][j]+1, d[i-1][j-1]+(not str1[i-1] == str2[j-1])) return d[len(str1)][len(str2)] if __name__ == "__main__": principal()
La pregunta es: ¿alguien me podría orientar para pasar este programa (que intenta ser un corrector ortográfico)a la POO?.- Si les resulta muy tedioso hacer un ej. completo, por lo menos desearía que me muestren tan solo un método, desde ya muchas gracias… Slds. Daniel ☕☕☕
|
|
|
3
|
Programación / Scripting / Generadores y yield en Python…
|
en: 13 Diciembre 2022, 19:43 pm
|
Hola gente linda, ¿cómo están? La consulta es ¿le encontraron en la vida real alguna utilidad a los generadores? Los consulto porque me pase 3 días enteros leyendo sobre el tema y en realidad todos los ejemplos son con números primos, impares, pares y no pasa de eso. Bueno es todo lo que necesito saber, ya que me falta aprender sobre yield from y otras cositas, pero si no tiene una utilidad significativa continuo con el siguiente tema.- def principal(): def tabla_del_cinco(oper): num = 1 while True: yield num , num * oper num += 1 try: operando = int(input("\n Ingrese la tabla que desea consultar...: ")) except: print("\n Debe ingresar un entero...") else: tabla = tabla_del_cinco(operando) print('\n===== "uno" para mostrar - "otro" para finalizar =====\n') while True: salir = input('"Ingrese...: ') if salir == '1': tupla = tuple(next(tabla)) final = f"{operando} x {tupla[0]} = {tupla[1]}" print(final) else: break if __name__ == "__main__": principal()
Slds. Daniel ☕☕☕
|
|
|
4
|
Programación / Scripting / lista de palabras agrupada por su letra inicial(diccionario)
|
en: 24 Noviembre 2022, 20:28 pm
|
1. Escriba un programa en Python que acepte una lista de palabras y las agrupe por su letra inicial usando un diccionario (solución). Entrada: [ “mesa”, “móvil”, “barco”, “coche”, “avión”, “bandeja”, “casa”, “monitor”, “carretera”, “arco”] Salida: {“m”: [“mesa”, “móvil”, “monitor”], “b”: [“barco”, “bandeja”], “c”: [“coche”, “casa”, “carretera”], “a”: [“avión”, “arco”]}
palabras = ['mesa', 'móvil', 'barco', 'coche', 'avión', 'bandeja', 'casa', 'monitor', 'carretera', 'arco'] abecedario = ['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'] diccionario = {} for abc in abecedario: for pal in palabras: if abc == pal[0]: diccionario[abc] = [pal] print(diccionario)
Hola gente, ¿cómo están? Las consultas es ¿estoy bien encaminado, o lo harían de otra manera?, no desconozco que no está del todo bien porque logro poner una sola palabra por letra, pero bueno, ya lo lograré… Desde ya muchas gracias… Slds. Daniel ☕☕☕
|
|
|
6
|
Programación / Scripting / Bases de datos utilizando archivo .txt en Python.
|
en: 13 Noviembre 2022, 21:29 pm
|
Estoy tratando de realizar mi gran sueño que es crear mis propias BD y para ello necesito alguna ayudita(descarto que alguien me diga «para que reinventar la rueda» gente sueños son sueños).- La ayuda es ¿de dónde puedo bajar un archivo con más de 100.000 registros y un ancho de por lo menos unas 40 caracteres, cada uno? Para hacerme enter mejor, lo que quiero medir (en tiempo) cuanto tarda en mostrar un registro(por ej. el 100.000) ordenado y cuanto tarda sin ordenar (esto desde una lista, por supuesto).- Bueno es todo y desde ya muchas gracias por el tiempo que le dediquen.-
Slds. Daniel ☕☕☕
|
|
|
7
|
Programación / Scripting / wait windows para tkinter...
|
en: 27 Octubre 2022, 02:05 am
|
Hola gente, ¿cómo están? Bueno ahora hago un cambio de rol, vengo a traerles un aporte, lo que ocurre es que estuve estudiando bastante(hace ya mucho tiempo) VFP y en ese lenguaje se utilizaba muchísimo, pero muchísimo una wait windows y en python por más que busco no encuentro nada parecido.- Lo dejo a vuestra consideración y cualquier aporte o crítica será bien venida.- import tkinter as tk from tkinter import ttk from functools import partial def cerrar(*waitVentana): waitVentana[0].destroy() def posicionarVentana(root): ventanaRaiz = root.geometry() ventanaRaiz = ventanaRaiz.replace('x', ',') ventanaRaiz = ventanaRaiz.replace('+', ',') dimPos = ventanaRaiz.split(',') xInicio = int(dimPos[0]) + int(dimPos[2]) yAlto = int(dimPos[3]) -50 return xInicio, yAlto def ventanaMensaje(texto, root): posicion = posicionarVentana(root) mensaje = texto waitVentana = tk.Toplevel(root) waitVentana.geometry('+%d+%d' % (posicion[0], posicion[1])) waitVentana.overrideredirect(1) waitVentana.grab_set() waitVentana.focus_set() waitVentana.bind('<Escape>', partial(cerrar, waitVentana)) frame = ttk.Frame(waitVentana) frame.pack() label = tk.Label(frame, text=mensaje, font=("vardana", 14), borderwidth=6, relief="ridge") label.pack() waitVentana.after(5000, waitVentana.destroy) frame.after(5000, frame.destroy)
def ventanaMensaje(texto, root):
Esta es la función principal y hay que pasarle el texto a mostrar y el nombre de la ventana que la invoca para darle una posición relativa.- Slds. Daniel ☕☕☕
|
|
|
8
|
Programación / Scripting / Que todos los entry dentro de un frame sean readonly en tkinter.
|
en: 20 Octubre 2022, 16:40 pm
|
Bueno, eso, tengo 7 entrys dentro de un frame y quisiera que sean todos de solo lectura hasta que se pulse el botón <Agregar>, es bastante tedioso tener que cambiar el estado de cada uno cada vez que se quieran editar.- Encontré por allí una manera de hacerlo con un bucle for, pero no me convenció.- Les dejo el programa por si alguien necesita correrlo… import tkinter as tk import Funciones from tkinter import ttk from functools import partial from idlelib.tooltip import Hovertip def centrarVentana(root): w = 430 h = 375 ws = root.winfo_screenwidth() hs = root.winfo_screenheight() x = (ws/2) - (w/2) y = (hs/2) - (h/2) root.geometry('%dx%d+%d+%d' % (w, h, x, y)) def main(): servicios = tk.Tk() servicios.title(" Servicios.") centrarVentana(servicios) # Mensajes(label) mensaje_mes = tk.Label(servicios, text="Mes", font=("Vardana", 12)) mensaje_mes.place(x=15, y=10) # Llenar el Combobox de los meses. meses = Funciones.meses_() # Llenar combo MES y seleccionar el MES actual. combo_mes = ttk.Combobox(servicios, state="readonly", width=9, font=("Verdana", 11), values=meses[0]) combo_mes.place(x=60, y=10) combo_mes.bind("<<ComboboxSelected>>") combo_mes.set(meses[1]) mensaje_anio = tk.Label(servicios, text="Año", font=("Vardana", 12)) mensaje_anio.place(x=15, y=50) combo_mes.set(meses[1]) año = Funciones.anios_() # Llenar combo AÑO y seleccionar el AÑO actual. combo_anio = ttk.Combobox(servicios, state="readonly", width=9, font=("Verdana", 11), values=año[0]) combo_anio.place(x=60, y=50) combo_anio.bind("<<ComboboxSelected>>") combo_anio.set(año[1]) # Frame para contener los botones caja_entrys = tk.Frame(servicios) caja_entrys.place(x=5, y=85) caja_entrys.config(width="416", height="213") caja_entrys.config(bd=5) caja_entrys.config(relief="ridge") mensaje_epe = tk.Label(caja_entrys, text="E.P.E - Factura......$ Kwh....$", font=("Vardana", 12)) mensaje_epe.place(x=5, y=10) mensaje_gas = tk.Label(caja_entrys, text="Gas - Factura.........$ M3......$", font=("Vardana", 12)) mensaje_gas.place(x=5, y=50) mensaje_comuna = tk.Label(caja_entrys, text="Comuna..................$", font=("Vardana", 12)) mensaje_comuna.place(x=5, y=90) mensaje_ceodal = tk.Label(caja_entrys, text="Ceodal....................$", font=("Vardana", 12)) mensaje_ceodal.place(x=5, y=130) mensaje_cable = tk.Label(caja_entrys, text="Cable Max..............$", font=("Vardana", 12)) mensaje_cable.place(x=5, y=170) # Entradas(E.P.E-Factura) entrada_epe_monto = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_epe_monto.place(x=155, y=10) # Entradas(E.P.E-Kwh) entrada_epe_kwh = tk.Entry(caja_entrys, font=("Vardana", 12), width=5) entrada_epe_kwh.place(x=335, y=10) # Entrada(Gas- Factura) entrada_gas_monto = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_gas_monto.place(x=155, y=50) # Entradas(Gas- M3) entrada_gas_M3 = tk.Entry(caja_entrys, font=("Vardana", 12), width=5) entrada_gas_M3.place(x=335, y=50) # Entrada(Comuna) entrada_comuna = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_comuna.place(x=155, y=90) # Entrada(Ceodal) entrada_ceodal = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_ceodal.place(x=155, y=130) # Entrada(Cable) entrada_cable = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_cable.place(x=155, y=170) # Frame para contener los botones caja_botones = tk.Frame(servicios) caja_botones.place(x=5, y=305) caja_botones.config(width="416", height="60") caja_botones.config(bd=5) caja_botones.config(relief="ridge") # Botón Agregar texto = ''' Agregar movimiento, no olvide seleccionar la fecha correcta... ''' boton_agregar = ttk.Button(caja_botones, text="Agregar", command=partial(Funciones.agregar, caja_botones)) boton_agregar.place(x=5, y=5, width=80, height=40) hovertip = Hovertip(boton_agregar, texto) # Botón Estadisticas boton_estad = ttk.Button(caja_botones, text="Estadisticas", command=partial(Funciones.estadisticas)) boton_estad.place(x=95, y=5, width=80, height=40) hovertip = Hovertip(boton_estad, ' Estadisticas de servicios ') # Botón Cerrar boton_cerrar = ttk.Button(caja_botones, text="Cerrar", command=servicios.destroy) boton_cerrar.place(x=320, y=5, width=80, height=40) hovertip = Hovertip(boton_cerrar, ' Cerrar aplicación. ') servicios.mainloop() if __name__ == '__main__': main()
from datetime import datetime def meses_(): meses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"] now = datetime.now() mes = now.month actual = meses[mes-1] return meses, actual def anios_(): años = ["2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033"] now = datetime.now() actual = now.year return años, actual def agregar(caja_botones): caja_botones.place_forget() def estadisticas(): print("estadisticas")
Desde ya muchas gracias y que tengan todos un lindo jueves... Slds. Daniel ☕☕☕
|
|
|
9
|
Programación / Scripting / Seleccionar palabras con espacios en widget TEXT en tkinter…
|
en: 16 Octubre 2022, 20:11 pm
|
Hola gente, ¿cómo están?, demasiado tiempo practicando y no logro encontrar la solución. Dejo algunos ejemplos: «from collections import Counter»Si arrastro el mouse del inicio al final de «from» ok Si arrastro el mouse del inicio al final de «from collections» copia solamente «collections»lo que necesito es que copie el total de lo seleccionado.- En cuanto al «doble clic» no me hace falta, por lo menos en este programa… Lo que ocurre también es que seleccionar todo lo tengo implementando correctamente, pero hay texto que debo extraer solo una parte.- def copiar_al_portapapeles(t1, muestra_codigo): inicio = muestra_codigo.index("insert-1c wordstart") final = muestra_codigo.index("insert -1c wordend") texto = muestra_codigo.get(inicio, final) print(texto) clib.copy(texto)
Desde ya gracias por el tiempo que le dediquen, gracias.- Slds. Daniel ☕☕☕
|
|
|
10
|
Programación / Scripting / Obtener el número mayor con comprensión de listas en Python.
|
en: 8 Octubre 2022, 22:06 pm
|
Hola gente, ¿cómo están?, es demasiado lo que estoy renegando por eso los consulto, ¿es posible obtener el número mayor de una lista sin utilizar el método MAX con comprensión de listas?.- Dejo lo que tengo hecho... #El mayor con comprensión de listas y método MAX a = [[10, 13, 454, 66, 44]] b = [max(p) for p in a] print(b)
lista = [10, 13, 454, 66, 44] el_mayor=0 for a in lista: if a > el_mayor: el_mayor = a print(el_mayor)
¿cómo inserto el condicional? lista = [[10, 13, 454, 66, 44]] mayor = [lis for lis in lista --> if....] print(mayor)
Slds. Daniel ☕☕☕
|
|
|
|
|
|
|