| |
Páginas: [ 1] 2 3 4 5 6 7 8 9 10
|
1
en: Hoy a las 06:29
|
|
Iniciado por Tachikomaia - Último mensaje por Tachikomaia
|
Qué bueno que ya pudiste comprobar que tu código funciona perfectamente cuando se ejecuta desde la consola. La razón por la que se cierra rápido y no genera el archivo al hacerle doble clic normal es que Windows y Python manejan de forma muy distinta la ruta donde se guardan las cosas en cada caso: ## El motivo del problema
* Al usar la consola (cmd): El sistema sabe exactamente en qué carpeta estás parado, por lo que crea Mywords.txt ahí mismo. * Al hacer doble clic: Windows abre el intérprete de Python (el archivo python.exe general del sistema). Para Python, la "carpeta actual" pasa a ser la carpeta del sistema de Windows (como C:\Windows\System32 o tu carpeta de usuario principal C:\Users\TuUsuario), y no la carpeta donde está tu script.
Al intentar crear el archivo de texto en una carpeta del sistema, Windows bloquea la acción por falta de permisos de administrador, Python lanza un error de acceso denegado y la ventana se cierra de golpe instantáneamente sin escribir nada. ------------------------------ ## La Solución Definitiva (Modifica tu código) Para que el programa funcione con doble clic desde cualquier lugar, debes decirle a Python que busque la ruta exacta donde está guardado el script y cree el archivo de texto ahí mismo. Reemplaza tu código actual por este (solo agregamos la librería os para detectar la ruta):
# -*- coding: utf-8 -*-import os charset = "abcdefghijklmnñopqrstuvwxyz" def has_three_consecutive_same_chars(word): """Función para verificar si hay tres caracteres consecutivos iguales.""" for i in range(len(word) - 2): if word == word[i + 1] == word[i + 2]: return True return False # Esto detecta automáticamente la carpeta real donde está este archivo .pydirectorio_actual = os.path.dirname(os.path.abspath(__file__))ruta_archivo = os.path.join(directorio_actual, "Mywords.txt") # Guardamos el archivo usando la ruta absoluta correctawith open(ruta_archivo, "w", encoding="utf-8") as txt: for a in charset: for b in charset: for c in charset: for d in charset: word = "K" + a + b + c + d if not has_three_consecutive_same_chars(word): txt.write(word + "\n")
print("¡Proceso terminado con éxito!") print(f"Archivo guardado en: {ruta_archivo}") input("\nPresiona Enter para salir...")Funcionó pero creo que antes no era tan complicado... ¿no se puede simplificar?
|
|
2
en: Hoy a las 04:34
|
|
Iniciado por Tachikomaia - Último mensaje por BloodSharp
|
La calculadora que pones no es fácil de hacer, y no entiendo bien esa página GitHub ¿tengo que descargar los py para ver los códigos? Tampoco sé qué tipo de archivos son .gitignore y README.md Los readme suelen ser en txt, doc, pdf... Usar sistema de control de versiones como git es el pan de cada día para cualquier desarrollador, ya queda en la época de las cavernas el "no utilizar" uno en tus proyectos. Lo que se hace es "clonar un repositorio" también conocido como descargar una copia del contenido con su historial de cambios, lo cual es muy útil. Aunque también se le puede dar click al botón de descargar como un archivo zip y te trae todo... El top está mal. O mi pregunta estuvo mal, porque claro el input en otros lenguajes es muy fácil de hacer pero en el mío no. En este caso el usuario Bloodsharp acierta en que es más difícil de hacer las cosas. Pero claro cuando quiero probar un valor lo escribo en el código y ya está. Tendría que haberle especificado en qué intento programar. No entendí nada de nada... ¿Cuándo dije que algo fuese más difícil de hacer las cosas? ¿Cuando pregunté lo de por qué usar Flash cuando hay que darle muchas vueltas para usarlo? Creo que el tema de cuánto tiempo toma es relevante, algunas cosas puede que sean "sencillas", pero toman tanto tiempo que no me lo parecen. O el beneficio-costo me hace sentir que no vale la pena. ¿Qué gano con poner sonido a un botón? Primero quiero hacer un juego más o menos jugable, adornarlo va después. Si querés hacer un juego y ya además sabiendo ActionScript, podrías intentar migrar como te dijeron a C# con Unity o quizás Python con algún framework para juegos sencillos... C# tiene similitudes a ActionScript por lo que aprender un nuevo lenguaje no debería ser tan complicado. También podrías eventualmente probar C o C++ que es básicamente el standard de la industria, teniendo en cuenta que C++ es como un C# pero bastante más difícil de leer/escribir (pero no imposible de entender). ¿Top 10 programas más fáciles de hacer? EDIT: Quiero agregar que hacer un cheat simple para un juego sin anticheat también es uno de los tipos de programas más fáciles de hacer. B#
|
|
3
en: Hoy a las 02:11
|
|
Iniciado por Tachikomaia - Último mensaje por EdePC
|
|
No entiendo bien lo que quiere lograr pero solo debes de saber que splice modifica un array como si ya estuvieras asignando valores, por eso el Set es innecesario SALVO que quieras trabajar sobre el valor que devuelve splice, y splice devuelve un Array con los elementos eliminados, a mi entender estás usando Set para asignarle a Resumen lo que devuelve splice, y splice te devuelve un array con los elementos que eliminó, si no eliminó nada te devuelve un array vacío
|
|
4
en: Ayer a las 23:53
|
|
Iniciado por Tachikomaia - Último mensaje por Eleкtro
|
Pero Python: - No fue tan fácil de instalar.
No hay complicaciones con eso, de verdad. Instalar Python es tan sencillo como descargar el instalador oficial de su web y ejecutarlo. Lo único que requiere un pelín más de atención viene después cuando te pones a configurar el entorno de Python para empezar a trabajar. EDITO: De todas formas, y para una instalación desatendida y sin menos complicaciones todavía, siempre puedes recurrir a la instalación de la Configuración para desarrolladores de Windows (Windows Developer Config) oficial de Microsoft: winget configure -f https://raw.githubusercontent.com/microsoft/WindowsDeveloperConfig/main/Workloads/python/configuration.winget --accept-configuration-agreements --disable-interactivity Repositorio oficial: https://github.com/microsoft/WindowsDeveloperConfig
- No viene con algo donde puedas dibujar o insertar dibujos normales, es tipo DOS, probablemente haya que buscar, y puede que no sea fácil saber cual es
Lo que buscas se denomina "Visual GUI builder" o diseñador de interfaces gráficas y suele formar parte de un buen IDE (Integrated Development Environment, o Entorno de Desarrollo Integrado). Primero se elige un framework con el que trabajar (lo que incluye las librerías especializadas que te permiten construir una interfaz gráfica) y luego buscas un diseñador de interfaces gráficas que soporte ese framework específico... Por ejemplo, QT Designer para pyQT -> https://build-system.fman.io/qt-designer-download Alternativamente, la IDE PyCharm para pyQT -> https://www.pythonguis.com/tutorials/getting-started-pycharm/ tkinter-designer para TKinter -> https://github.com/parthjadhav/tkinter-designer CustomTkinterBuilder para CustomTkinter -> https://github.com/rigvedmaanas/CustomTkinterBuilder wxGlade para wxPython -> https://wxglade.sourceforge.net/etc. Si te refieres a usar sprites/assets gráficos directamente, me remito a los ejemplos de video juegos que señalé en mi anterior comentario.
- No permite concatenar un texto y un número, tienes que convertir el número en texto. Claro que lo permite, mediante la interpolación de strings: age: int = 25 print(f"Age: {age}")
Busca sobre "F-Strings" en Python para más ejemplos o información. Es de facto una conversión de tipos, pero posiblemente te referías a concatenar con "+" y eso no es necesario; las cosas se pueden simplificar mediante la interpolación.
- Hace años cuando intenté que un programa genere un archivo, no pude.
Pero el culpable no fue el lenguaje de programación, sino muy posiblemente un tropiezo técnico por parte del humano. Escribir el código para crear un archivo es muy simple, pero si el entorno no está bien configurado (por ejemplo, si no hay permisos de escritura en esa carpeta), o si el archivo está en uso por otro programa, entonces todo se va a la *****.
- Aún tengo problemas para hacer que el programa más simple del mundo funcione, por problemas del formato, que no entiendo porque si lo grabo como py entonces el formato debería ajustarse a py, pero parece que hay un py UTF8 y otros tipos de py.
Se te explicó el motivo del problema y la solución. De hecho, se te ofrecieron varias soluciones. Todo es cuestión de ir aprendiendo. Usar una codificación de texto incorrecta o errores parecidos es algo que TODOS hemos sufrido al aprender. No dejes que algo así te desanime con Python.
si al mostrar código o un ejemplo es una página que tienes que hacer un curso para poder entender qué es lo que muestra y ver el código, algo está mal en eso.
Pero no me eches la culpa a mi, ¿te das cuenta que estás publicando constantemente en una sección de programación?; Lo lógico por mi parte cuando te respondí era asumir que estarías familiarizado con una de las plataformas que la mayoría de los programadores dominan en mayor o en menor medida, pero que todos los programadores hoy en día conocen, como es GitHub. Imaginate que en el foro en vez de poner códigos se pusieran archivos para descargar, junto con unos que tienes que hacer un curso para entender qué son ¿no te parece absurdamente burocrático?
Estás mezclando las cosas, cuando cada herramienta tiene su función. El foro es ideal para debatir, responder y darte "códigos" de forma rápida, mientras que GitHub es el espacio diseñado específicamente para que los programadores puedan subir, revisar y descargar código fuente de forma limpia y ordenada, y los usuarios puedan navegar por los archivos del código fuente de forma estructurada. No es burocracia, sino organización. Si la página esa no es capáz de mostrar códigos de forma normal, cómoda para el usuario
Solo tienes que ubicar en el repositorio el archivo de código fuente que quieras analizar, y hacer click en él para ver su contenido. EDITO: De todas formas, comprendo que al no estar familiarizado con un sitio web y su estructura de organización no sepas a dónde ir para encontrar lo que buscas, pero es cuestión de práctica. Yo casi nunca recuerdo dónde está cada cosa en Bitbucket (otro repositorio de códigos tipo GitHub) por lo poco que lo uso, y me pierdo. A veces me he perdido también en la Visual Studio Market Place ( https://marketplace.visualstudio.com/) para gestionar mis publicaciones y en la galería de NuGet ( https://nuget.org) también.
|
|
5
en: Ayer a las 21:48
|
|
Iniciado por Tachikomaia - Último mensaje por Tachikomaia
|
|
Pero Python: - No fue tan fácil de instalar. - No viene con algo donde puedas dibujar o insertar dibujos normales, es tipo DOS, probablemente haya que buscar, y puede que no sea fácil saber cual es el adecuado y hacer que funcione. - No permite concatenar un texto y un número, tienes que convertir el número en texto. - Hace años cuando intenté que un programa genere un archivo, no pude. - Aún tengo problemas para hacer que el programa más simple del mundo funcione, por problemas del formato, que no entiendo porque si lo grabo como py entonces el formato debería ajustarse a py, pero parece que hay un py UTF8 y otros tipos de py.
Tu respuesta no tiene mucho sentido para mí, si yo muestro un programa de ejemplo muestro código o un archivo que puede descargarse (aunque no debería ser necesario) donde esté el c´código; si al mostrar código o un ejemplo es una página que tienes que hacer un curso para poder entender qué es lo que muestra y ver el código, algo está mal en eso. Imaginate que en el foro en vez de poner códigos se pusieran archivos para descargar, junto con unos que tienes que hacer un curso para entender qué son ¿no te parece absurdamente burocrático?
Si la página esa no es capáz de mostrar códigos de forma normal, cómoda para el usuario, entonces diles "git gud" y cuando lo logren me avisan.
|
|
6
en: Ayer a las 17:49
|
|
Iniciado por Tachikomaia - Último mensaje por Eleкtro
|
La solución parece simple, no comprarles hasta que vuelvan a lo que quieres La solución siempre parece simple sobre el papel, pero en la práctica todo suele depender de lo que decida hacer la masa aborregada, que por lo general suele elegir exactamente la solución que menos le beneficia... Me explico, la civilización humana está compuesta mayoritariamente por una masa de gente estúpida. Es un hecho casi empírico, una realidad demostrable y palpable. Y, al final, esa masa mayoritaria, con escaso sentido de criterio y de objetividad (y ya ni hablemos de conciencia de consumidor), siempre terminará pasando por el aro.  Si una masa conformista y complaciente traga con el cambio y sigue comprando el producto, la empresa no sufre penalización económica ni castigo alguno, por ende, no van a rectificar sino más bien todo lo contrario. Y viendo los antecedentes de lo que suele elegir la masa mayoritaria, no hay que ser ningún genio para darse cuenta de que estamos presenciando el verdadero final del formato físico, cosa que ya estaba tambaleándose en la cuerda floja durante muchos años, pero ahora se le están dando las estocadas finales.
|
|
7
en: Ayer a las 17:34
|
|
Iniciado por Tachikomaia - Último mensaje por Eleкtro
|
¿tengo que descargar los py para ver los códigos? Si necesitas realizar esa pregunta, entonces está claro que responderte un simple "sí" no te va a servir de mucha ayuda, así que activo el modo " RESPUESTA EXTENSA": Flash / ActionScript es tecnología del pasado sin soporte ni futuro, y las IA actuales solo te harán perder el tiempo, marearte y causarte problemas debido a sus frecuentes alucinaciones. Si de verdad te apetece programar, ya sea por hobby o por lo que sea, no sigas perdiendo el tiempo con cosas del pasado, tíralas a la basura y empieza a asimilar conceptos reales con un lenguaje actual como Python. Empieza por dominar los fundamentos e introducirte a fondo en la sintaxis y semántica del lenguaje, hasta que como mínimo entiendas el significado y propósito del ecosistema de archivos como .py, .pyc, .pyd, .pyw y .pyi. ¿Que lo tuyo es programar video juegos? Pues mi respuesta sigue siendo la misma: tira a la basura Flash / ActionScript. Aquí tienes ejemplos hechos en Python para aburrir: - https://github.com/itspyguru/Python-Games - https://github.com/topics/2d-game?l=pythonDesde un "Contra" hasta un "Zelda" RPG. Si accedes a cualquier repositorio la mayoría tendrán capturas de pantalla o GIFs animados para que te hagas una idea de lo que se puede llegar a hacer con Python. Y tutoriales no te van a faltar en Internet, está literalmente plagado de ejemplos en Python, y eso también es bueno a la hora de realizar consultas a una IAs... en comparación con ActionScript. O directamente te lanzas al vacío y das el gran salto al lenguaje C# (C-Sharp) usando la suite de Unity para el desarrollo de video juegos en plan "pro". Pero eso ya implicaría aprender no solo un lenguaje de programación desde cero, sino además un motor de video juegos gigantesco. No creo que sea recomendable en tu caso en específico. Pregúntale a la IA que le parece esta recomendación que acabo de hacerte. Estoy convencido que si la IA "te aprecia" también te dirá que empieces YA con Python y te olvides del ActionScript. Pero bueno, esto solo es una recomendación general suponiendo que quieras ampliar conocimientos y habilidades de programación. Pero como es evidente yo no puedo saber a lo que tú aspiras, ni si te conformas con ActionScript y no quieres nada más por que no necesitas programar cosas más complejas.
Tampoco sé qué tipo de archivos son .gitignore y README.md Los readme suelen ser en txt, doc, pdf... ".gitignore" es básicamente una "lista negra". Es un archivo de texto plano donde el autor del proyecto define reglas para archivos y carpetas que quiere que Git (el sistema de control de versiones del código fuente) ignore completamente. Hay muchas plantillas por Internet para diferentes tipos de lenguajes de programación, incluyendo para Python. "md" es la extensión para archivos Markdown, el formato de texto plano / lenguaje de markup estandarizado para documentar repositorios en GitHub. Un "README.md" es el archivo principal que la plataforma renderiza para describir el proyecto en la página principal del repositorio. No lo vas a ver con otra extensión de archivo... Tú a lo que te refieres es incluir archivos de texto plano como "Léeme.txt" o "Readme.pdf" cuando se distribuye software al usuario final, pero eso no sustituye el uso de Markdown para documentar repositorios / código fuente. De todas formas, cualquier editor de texto hoy en día es capaz de interpretar y hasta renderizar formato Markdown. Sin ir más lejos, el Bloc de Notas de Windows 11 lo soporta de forma nativa y todo lo que escribes y los botoncitos para poner palabras en negrita y cursiva y etc generan formato Markdown en segundo plano. Eso para que te hagas una idea de lo común y adoptado que está el formato Markdown aunque pienses lo contrario. EDITO: se me pasó por alto mencionarte que hay aplicaciones web, como la siguiente, para construir tu documento Markdown: - https://markdownlivepreview.com/
|
|
8
en: Ayer a las 11:53
|
|
Iniciado por Tachikomaia - Último mensaje por Tachikomaia
|
La conversación es un poco larga y difícil de resumir. En resumen dice que me falla esto set(Resumen, eval(Resumen).splice(LineaDondeAgregar, 0, "2")); Resumen es "Code4" o "Code5" según el momento de ejecución. Ambos son los nombres de arrays. Lo que intento con esa línera es que al array de turno se le inserte un elemento en la posición LineaDondeAgregar, que puede ser 0 o 1, según el momento, y dicho elemento tenga el valor "2". Entiendo que usar set es innecesario. Lo que no entiendo es por qué el resultado cambia cuando uso set  Supongamos que Code4 fuese ["1"], un elemento solo. Esto set(Resumen, eval(Resumen).splice(LineaDondeAgregar, 0, "2")); se transforma en Code4 ahora es ["2", "1"] Pero la IA dice que el resultado es vacío. ¿Qué tiene que ver el set, cómo es posible que lo influya? 2+2 es 4 en el set o fuera del set. eval(Resumen).splice(LineaDondeAgregar, 0, "2") es ["2", "1"] en el set o fuera. En realidad esa línea es "Coide4 es ahora ["2", "1"]", al ponerlo en un set es como que en la definición de un array estoy definiendo un array, es raro sí, no sé cual debería ser la consecuencia de eso, pero ¿vacío? ¿por qué? La conversación completa, incluyendo contexto y explicación antes de que hiciera este post https://share.google/aimode/Nem6q1MoG0ODU3avAEDIT: Lo que quería con el código lo acabo de lograr, el tema no va de eso, sino por qué splice falla al estar en set.
|
|
9
en: Ayer a las 08:23
|
|
Iniciado por Tachikomaia - Último mensaje por Tachikomaia
|
Creo que, a veces siento que debo hacer estas cosas y otras que es una pérdida de tiempo. Estoy en el modo 1. La calculadora que pones no es fácil de hacer, y no entiendo bien esa página GitHub ¿tengo que descargar los py para ver los códigos? Tampoco sé qué tipo de archivos son .gitignore y README.md Los readme suelen ser en txt, doc, pdf... En fin, haré los ejercicios... El hola mundo es sólo un trace o en mi caso puede ser crear un texto con eso en el frame, no conviene crear otros frames. La calculadora si es como dijo la IA (no con interfase), m... en mi caso no hay "input", puede simularse pero la tecla enter puede hacer otras cosas así que no es buena idea usarla. Nunca hice esto, no parece tan fácil. En el frame 1 un texto debe decir "Inserte el 1er número a usar y luego presione espacio" Ocupando ese y otros frames debe haber un texto dinámico que muestre una variable tipo cadena en la cual se irá formando el número. Como alternativa se puede hacer insertando instancias de textos así antes creados, pero no vale la pena en este caso creo. También puede ponerse que se pueda cliquear el texto y queda como un cuadro donde puedes escribir, pero no estoy seguro de si puedo impedir que se escriban cosas distintas a números de ese modo, además queda en formato texto, nunca me gustó hacerlo así. Y si prohibes símbolos quizá se prohibe el ., por lo que no se podrían poner números con . ¿y negativos? En fin, a fin de cuentas no es un modo en que tengas mucho control. Sigo con la forma más imitadora de input. Cuando se capta una tecla presionada Si la variable Numero1 no es "" Si el keycode de la tecla captada es >X y <Y, es decir si están en el rango de keycodes de números Numero1 = Numero1+ el número correspondiente a la tecla presionada Bah, puedo seguir, pero no tiene sentido, en otras conversaciones me dijo que el juego Simón dice era uno de los juegos más sencillos, y es más sencillo que esto, al menos si se hace con pocas teclas, como esto https://www.youtube.com/watch?v=rcBhr8d2FXo2:55 El top está mal. O mi pregunta estuvo mal, porque claro el input en otros lenguajes es muy fácil de hacer pero en el mío no. En este caso el usuario Bloodsharp acierta en que es más difícil de hacer las cosas. Pero claro cuando quiero probar un valor lo escribo en el código y ya está. Tendría que haberle especificado en qué intento programar. https://share.google/aimode/fjShcjtOzVULU8izmMal también. Hace mucho que no pongo sonidos, seguro hay cosas más sencillas que el ejemplo que da. Aunque sí es más sencillo que la mayoría de lo que intento hacer. Acá está mejor https://share.google/aimode/PUnZgBQveWI8yiD5xotro día intento esos. Los anterioes eran demasiado visuales, no sé, animar textos, se puede hacer con programación pero es como que me aburre, ya lo hice hace muchos años y al final no sirvió, fue para la presentación de un juego que no pude hacer porque no supe animar una capa. https://www.youtube.com/watch?v=_RAj3Z6DbuINo tenía Internet, pero ahora ya fue, ni siquiera intento crear personajes, uso sprites. Creo que el tema de cuánto tiempo toma es relevante, algunas cosas puede que sean "sencillas", pero toman tanto tiempo que no me lo parecen. O el beneficio-costo me hace sentir que no vale la pena. ¿Qué gano con poner sonido a un botón? Primero quiero hacer un juego más o menos jugable, adornarlo va después.
|
|
10
en: Ayer a las 06:19
|
|
Iniciado por Tachikomaia - Último mensaje por Tachikomaia
|
El juego te dice "Prepárate para hacer clic en el objeto, no en el fondo", luego de un tiempo al azar aparece el objeto, y cuando le haces clic ganas. Quiero que el juego se repita, mostrándote el promedio de cuánto tardas en hacer el clic. Para que no sea bueno hacer clics constantemente, si haces clic en el fondo tu promedio se multiplica. Para calcular bien el promedio debo crear un array o muchas variables, aún no lo intenté, no es el tema, lo que me tiene trancado es que quiero que el tiempo de espera dependa de tu tiempo promedio y no lo logro. Luego explico este código: // How fast the player wins: FakeAverageTime = 0; TimePassed = 0; AparitionProgress = random(250); // Usada repetidamente en un objeto en frame 2: function FireApearing () { AparitionProgress++; if (AparitionProgress > 500) { TimePassed = 0; // On frame 3 the fire is present: gotoAndStop (3); } } // Used on the fire sprite when its clicked: function FireExtinguished () { FakeAverageTime = Math.round((FakeAverageTime+TimePassed)/2); AparitionProgress = 100+random(150); gotoAndStop (2); }
En vez de usar tiempo de espera uso AparitionProgress, no hay mucha diferencia, el conteo sube en vez de bajar, y el objeto aparece cuando se llega a un número. Lo que quiero cambiar es: AparitionProgress = 100+random(150); No sé cómo sería una buena fórmula pero quiero que: - Siempre haya algo de random. - Entre mayor sea tu promedio (más tardes), mayor sea el tiempo de espera (AparitionProgress comienza con un valor más bajo). - El tiempo de espera no sea demasiado alto, tenga un límite (AparitionProgress no puede ser menor que 0). Más concretamente algo como: - Si tu promedio es 0 (prácticamente imposible que suceda, pero bueno), AparitionProgress debe ser 490~500. - Si tu promedio es 30, AparitionProgress debe ser 430~460. Si tu promedio es muy alto (si juegas mal a propósito o aún no entendiste), AparitionProgress debe ser 0~10. Y claro cualquier número intermedio debe tener su rango de valores. Ah pero siempre es un número entero. Lo más parecido que tengo como fórmula es: Minimo = 490-FakeAverageTime*2 AparitionProgress = Minimo+random(490-Minimo) Si AparitionProgress < 0 AparitionProgress = random(10) Luego de mucho tiempo pensándolo (quizá 2hs), no le veo mucho sentido a seguir, si otro lo puede resolver en minutos.
|
Páginas: [ 1] 2 3 4 5 6 7 8 9 10 |
| |
|