elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 239
181  Informática / Software / Re: Dudas sobre John the Ripper. en: 7 Diciembre 2024, 20:07 pm
De esto no tengo mucha idea.

¿Está bien?

Digo por los warnings. ¿Y se estima que tardará 17 horas?  :o ¿o qué es ETA?
182  Informática / Software / Re: Dudas sobre John the Ripper. en: 7 Diciembre 2024, 17:56 pm
Tengo una lista de contraseñas generadas con Python. La puse en el directorio run.

No logro hacerla funcionar:


¿Cómo lo logro?
183  Programación / Programación General / Ayuda con las funciones de string de AS 1.0. en: 5 Diciembre 2024, 07:34 am
Intenté hacer una simulación de un sorteo pero ni con ayuda de GPT pude >__<

Se tiene una urna con 2 bolas blancas y una negra. 3 personas van sacando por turnos hasta que saquen la negra. Esa persona pierde. Yo quería ver si sacar 1ero da ventaja, desventaja, o si está favorecido el 2ndo, etc.

Código
  1. BaseUrna = "WWB";
  2. AlexPerdidas = 0;
  3. BartPerdidas = 0;
  4. CamiloPerdidas = 0;
  5. function Sortear () {
  6. // Preparar urna:
  7. Urna = BaseUrna;
  8. // Elección de la 1er persona, Alex:
  9. BolaDeAlexNro = random(3);
  10. if (BolaDeAlexNro == 2) {
  11. AlexPerdidas++;
  12. } else {
  13. BolaDeAlex = Urna.charat(BolaDeAlexNro);
  14. Parte1 = substring(Urna, 0, BolaDeAlexNro);
  15. trace(Parte1);
  16. Parte2 = substring(Urna, BolaDeAlexNro+1, Urna.length);
  17. trace(Parte2);
  18. Urna = Parte1+Parte2;
  19. // trace(Urna);
  20. // Elección de la 2nda persona, Bart:
  21. BolaDeBartNro = random(2);
  22. if (BolaDeBartNro == 1) {
  23. BartPerdidas++;
  24. } else {
  25. CamiloPerdidas++;
  26. }
  27. }
  28. }
La función se repite y los resultados se muestran en pantalla. Lo de Parte1 y Parte2 se lo copié a GPT pero no funciona bien.

Quiero que de Urna se remueva la bola que fue elegida. Es claro que en ese punto será una W, así que siempre quedaría WB, pero quiero aprender a hacerlo de este modo.

Es que no entiendo los métodos string, la ayuda de Flash carece de ejemplos en eso.

Además no vi algo que sirva para remover un caracter.

Citar
myString.concat(valor1,...valorN);
Argumentos

valor1,...valorN
Cero o más valores que se van a concatenar.

Descripción

Método; combina los valores especificados y devuelve una nueva cadena. Si es necesario, cada argumento valor se convierte en una cadena y se anexa, en orden, al final de la cadena.
No se entiende bien lo de ",...", imagino que es cualquier cantidad de valores, y los concatena, pero es más fácil hacer esto:
Concatenado = ""+Valor1+Valor2;
o:
Concatenado = String(Valor1)+Valor2;

Quizá la diferencia es que .concat modifica el valor. No:
Código:
BaseUrna = "ABC";
BaseUrna.concat("D");
trace(BaseUrna);
eso me da ABC.

No entiendo qué hace exactamente o qué ventaja tiene comparado con lo que dije.

Siguiente:
Citar
myString.slice(inicio, fin);
Argumentos

inicio: Un número que especifica el índice del punto de inicio del sector. Si inicio es un número negativo, el punto inicial se especifica desde el final de la matriz, donde -1 es el último elemento.

fin: Un número que especifica el índice del punto final del sector. Si no se especifica fin, el sector incluye todos los caracteres desde el inicio al final de la cadena. Si fin es un número negativo, el punto final se determina desde el final de la cadena, donde -1 es el último carácter.

Descripción
Método; extrae un sector o una subcadena del objeto String especificado, después la devuelve como una nueva cadena sin modificar el objeto String original. La cadena devuelta incluye el carácter inicio y todos los caracteres hasta (pero sin incluir) el carácter fin.

Código: Resultado
BaseUrna.slice(0, 0):
BaseUrna.slice(0, 1): A
BaseUrna.slice(0, 2): AB
BaseUrna.slice(0, 3): ABC
BaseUrna.slice(1, 1):
BaseUrna.slice(1, 2): B
BaseUrna.slice(2, 3): C
BaseUrna.slice(3, 3):
El final se nombra como si fuese +1 a lo que se quiere, no tiene mucho sentido. Si quiero del 0 al 2, debo decir del 0 al 3.

La cosa es que esto de cortar tiene poco, sólo es obtener parte de una cadena.

Citar
myString.split(delimitador);
Argumentos

delimitador: El carácter utilizado para delimitar la cadena.

Descripción

Método. divide un objeto String rompiendo la cadena cuando se produce el argumento delimitador especificado y devuelve las subcadenas en una matriz. Si no se especifica delimitador, la matriz devuelta contiene solamente un elemento: la propia cadena. Si el delimitador es una cadena vacía, cada carácter del objeto String se convierte en un elemento de la matriz.
No lo entiendo, lo pruebo.
BaseUrna.split(0): ABC
BaseUrna.split(1): ABC
BaseUrna.split(2): ABC
BaseUrna.split(3): ABC
No sé, no veo división, ni siquiera cambio. ¿Hay que especificar el caracter, no es un número?

Citar
myString.substr(inicio, longitud);
Argumentos

inicio: Un número entero que indica la posición del primer carácter de la subcadena que se está creando. Si inicio es un número negativo, el punto inicial se determina desde el final de la matriz, donde -1 es el último carácter.

longitud: El número de caracteres en la subcadena que se está creando. Si no se especifica longitud, la subcadena incluye todos los caracteres desde el inicio al final de la cadena.

Descripción

Método; devuelve los caracteres de una cadena desde el índice especificado en el argumento inicio, hasta el número de caracteres especificados en el argumento longitud.

Este lo he usado y lo entiendo, creo. Además es lo que me conviene usar, creo. Pero cómo.
Si la bola elegida es la 0, no necesito 2 partes, hago:
Urna = Urna.substr(1, Urna.length);

Si fuera la última, más o menos lo mismo:
Urna = Urna.substr(0, (Urna.length)-1);
pero eso no funciona:
Urna.substr(0, (Urna.length)-1):
Urna.substr(0, Urna.length: ABC
Urna.substr(1, (Urna.length)-1):
Urna.substr(1, Urna.length: BC

Sin los paréntesis tampoco. Ah, tenía mal escrito length a la derecha de los :, suelo escribir mal esa palabra, ahora sí:
Urna.substr(0, (Urna.length)-1): AB
Urna.substr(0, Urna.length: ABC
Urna.substr(1, (Urna.length)-1): BC
Urna.substr(1, Urna.length: BC

¿pero por qué el 3ero da BC en vez de B?
trace("Urna.substr(1, (Urna.length)-1): "+Urna.substr(1, (Urna.length)-1));
Ah, porque lo 2ndo es la cantidad de caracteres a obtener, no hasta cual. En este caso serán 2. Bien.

Y bueno, si se quiere remover un caracter intermedio, sí, en partes:
Parte1 = Urna.substr(0, X);
Parte2 = Urna.substr(BolaDeAlexNro+1, Y);

¿Está bien? Debo calcular X e Y.

En este caso, el número elegido es el 1. Entonces se quiere captar, en la Parte1, sólo el caracter 0. Entonces va 1. ¿Pero cual es la fórmula?
Si hubieran más elementos: ABCDE
Si se elige el 1, B, queremos obtener sólo A.
Si se elige 2, C, queremos AB.
Entonces la cantidad de números que queremos obtener es igual al número elegido:
Parte1 = Urna.substr(0, BolaDeAlexNro);

Ahora Y. Bueno, siempre se va a querer hasta el caracter final, así que es:
Parte2 = Urna.substr(BolaDeAlexNro+1, Urna.lenght);
lo escribí mal de nuevo >___< th, th, th, th, th, th...
Parte2 = Urna.substr(BolaDeAlexNro+1, Urna.length);

Así parece ok:
Código
  1. BaseUrna = "ABCD";
  2. AlexPerdidas = 0;
  3. BartPerdidas = 0;
  4. CamiloPerdidas = 0;
  5. function Sortear () {
  6. // Preparar urna:
  7. Urna = BaseUrna;
  8. // Elección de la 1er persona, Alex:
  9. BolaDeAlexNro = random(4);
  10. if (BolaDeAlexNro == 3) {
  11. AlexPerdidas++;
  12. } else {
  13. BolaDeAlex = Urna.charat(BolaDeAlexNro);
  14. Parte1 = Urna.substr(0, BolaDeAlexNro);
  15. // trace(Parte1);
  16. Parte2 = Urna.substr(BolaDeAlexNro+1, Urna.length);
  17. // trace(Parte2);
  18. Urna = Parte1+Parte2;
  19. trace(Urna);
  20. }
  21. }

Remueve A, B o C sin problema. No es necesario un if cuando sólo se quiere remover la parte 0.

Listo.

Citar
myString.substring(desde, hasta);
Argumentos

desde: Un número entero que indica la posición del primer carácter de la subcadena que se está creando. Los valores válidos para desde van de 0 a string.length - 1.

hasta: Un número entero que es 1 + el índice del último carácter de la subcadena que se está creando. Los valores válidos para hasta van de 1a string.length. Si no se especifica el argumento hasta, el final de la subcadena es el final de la cadena. Si desde es igual a hasta, el método devuelve una cadena vacía. Si desde es mayor que hasta, los argumentos se intercambian automáticamente antes de que se ejecute la función.

Descripción

Método; devuelve una cadena que consiste en los caracteres entre los puntos especificados por los argumentos desde y hasta.
Por ahora me cansé. Esa es la que me dijo GPT.

Citar
substring(cadena, índice, recuento);
Argumentos

cadena La cadena de la que extraer la nueva cadena.

índice El número del primer carácter que se va a extraer.

recuento El número de caracteres que se van a incluir en la cadena extraída, sin incluir el carácter de índice.

Descripción

Función de cadena; extrae parte de una cadena.
Esta es probablemente la que necesitaba. Como es distinta (no empieza con "variable."), no pensé que fuese la que buscaba. Que me sirva de lección xP

En fin, lamento el entrevero.
184  Programación / Programación General / Re: Simulación de empuje. en: 4 Diciembre 2024, 09:26 am
Logré algo que me parece aceptable a pesar de todo.

Básicamente puse que al momento de empujar se considere el ancho máximo del personaje.

Y tenía un error en que el ancho del barril es 24, o sea que el número en el cálculo era 12, no 14. Cuando tenía los números 14 y 12 en el cálculo y sustituí uno porque se considere el ancho variable del personaje, sustituí el incorrecto. Igual no sé si era el problema.

https://youtu.be/QltICF6s-Gw

Lo que sucede al final es que el personaje empezó a caminar cuando un barril lo estaba tocando, eso es otro tema.

Código
  1. // Indica si el juego continúa o no:
  2. Game = "Ok";
  3. // Por motivos que no recuerdo, las imágenes se ponen...
  4. // en un objeto I.
  5. // Agregar personaje:
  6. I.attachMovie("sMedaMan", "Player", 1);
  7. // X es porque la posición real del personaje no admite...
  8. // tantos valores, los simplifica, se pierde parte;
  9. // de este modo no:
  10. I.Player.X = 0;
  11. I.Player._X = I.Player.X;
  12. I.Player._Y = 584;
  13. I.Player.Action = "Quiet";
  14. LV = 1;
  15. Recorrido = 0;
  16. BarrilesToAdd = 0;
  17. // Aunque hay 0 barriles se pone 10 porque también es...
  18. // el valor que determina qué tan adelante se ponen,
  19. // y el valor 1 es del personaje,
  20. // entonces realmente los barriles es esto-10:
  21. Barriles = 10;
  22. // La mínima distancia a la que Medaman y un barril se tocan...
  23. // depende de qué dibujo tenga Medaman, ya que al caminar,
  24. // uno es más ancho. Pero para simplificar,
  25. // se considerará el más ancho: 32. El ancho del barril es 24.
  26. // Además se agrega 0.2 porque es lo que Medaman...
  27. // se podría mover, y 0.05 para evitar fallas por...
  28. // inexactitudes al operar decimales.
  29. MinDistanciaSinChoque = 16+12+0.25;
  30. // /////////////////////////////////////////////
  31. // /////////////////  MedaMan  /////////////////
  32. // /////////////////////////////////////////////
  33. function AumentarRecorrido () {
  34. Recorrido++;
  35. if (Recorrido == 50) {
  36. Recorrido = 0;
  37. LV++;
  38. }
  39. }
  40. function Walk () {
  41. I.Player.Action = "Walking";
  42. I.Player.gotoAndStop(2);
  43. // Ver si empuja algún barril:
  44. I.Player.Empujar = "No";
  45. // Se comienza desde 10 por lo ya explicado
  46. // (tal vez convenga chequear desde el último):
  47. BarrilesChequeados = 10;
  48. trace("Checking empuje");
  49. do {
  50. BarrilesChequeados++;
  51. BarrilaChequear = "I.Barril"+BarrilesChequeados;
  52. BarrilX = eval("I.Barril"+BarrilesChequeados+".X");
  53. // Si el barril existe:
  54. if (BarrilX != undefined) {
  55. DistanciaPlayerBarril = Math.abs(I.Player.X-BarrilX);
  56. if (DistanciaPlayerBarril < MinDistanciaSinChoque) {
  57. trace ("Empuja");
  58. I.Player.Empujar = "Sí";
  59. break;
  60. }
  61. }
  62. } while (BarrilesChequeados<Barriles);
  63. if (I.Player.Empujar == "No") {
  64. // El personaje avanza lo normal:
  65. I.Player.X = I.Player.X+0.2;
  66. AumentarRecorrido();
  67. } else {
  68. // Avanza menos:
  69. I.Player.X = I.Player.X+0.1;
  70. // Ojo que fue hecho para que avance 0.2, puede que lo empuje desde muy lejos.
  71. // Recorrido debe aumentar acorde a eso, arreglarlo:
  72. AumentarRecorrido();
  73. // Empuja un barril:
  74. // Esto sólo aumenta la velocidad, ojo que si no se mueve puede que quede tocando al personaje:
  75. BarrilSpeed = BarrilaChequear+".Speed";
  76. set (BarrilSpeed, 0.15);
  77. }
  78. I.Player._X = I.Player.X;
  79. }
  80. function Quiet () {
  81. I.Player.Action = "Quiet";
  82. I.Player.gotoAndStop(1);
  83. }
  84. // Whens:
  85. function RightWhenQuiet () {
  86. // Ver si toca algún barril:
  87. BarrilesChequeados = 10;
  88. do {
  89. BarrilesChequeados++;
  90. if (I.Player.hitTest(eval("I.Barril"+BarrilesChequeados)) == true) {
  91. trace("Apareció en barril");
  92. // Game over:
  93. Game = "Over";
  94. I.Player.gotoAndStop(2);
  95. break;
  96. }
  97. } while (BarrilesChequeados<Barriles);
  98. if (Game == "Ok") {
  99. Walk();
  100. } else {
  101. // Esto probablemente esté bien antes del break:
  102. gotoAndStop (3);
  103. }
  104. }
  105. function RightWhenWalking () {
  106. // AumentarRecorrido();
  107. Walk();
  108. }
  109. function QuietWhenWalking () {
  110. Quiet();
  111. }
  112. // QuietWhenQuiet nada hace.
  113. function ControlPlayer () {
  114. if (Key.isDown(39)) {
  115. // Si se presiona derecha:
  116. eval("RightWhen"+I.Player.Action)();
  117. } else {
  118. // Si nada se presiona:
  119. eval("QuietWhen"+I.Player.Action)();
  120. }
  121. }
  122. // /////////////////////////////////////////////
  123. // ////////////////  Barriles  /////////////////
  124. // /////////////////////////////////////////////
  125. function AddBarriles () {
  126. BarrilesToAdd = BarrilesToAdd+random(LV)/1000;
  127. while (BarrilesToAdd>=1) {
  128. BarrilesToAdd--;
  129. Barriles++;
  130. // Probablemente innecesario, y causante de bugs si no se parchea:
  131. if (Barriles>1010) {
  132. Barriles = 11;
  133. }
  134. BarrilAgreado = "Barril"+Barriles;
  135. I.attachMovie("sBarril", BarrilAgreado, Barriles);
  136. BarrilAgreado = "I."+BarrilAgreado;
  137. set(BarrilAgreado+".X", 0);
  138. setProperty (BarrilAgreado, _x, 0);
  139. setProperty (BarrilAgreado, _y, 584);
  140. set (BarrilAgreado+".Speed", random(LV)/10);
  141. set (BarrilAgreado+".Spin", 0.1+random(LV)/10);
  142. }
  143. }
  144. function MoveBarriles () {
  145. Moved = 10;
  146. // trace("Checking golpe");
  147. do {
  148. Moved++;
  149. BarrilaMover = "I.Barril"+Moved;
  150. BarrilSpeed = BarrilaMover+".Speed";
  151. EvaluedBarrilSpeed = eval(BarrilSpeed);
  152. // Aplicar rozamiento:
  153. if (EvaluedBarrilSpeed > 0) {
  154. EvaluedBarrilSpeed = EvaluedBarrilSpeed/1.0025;
  155. // Si la velocidad queda muy baja:
  156. if (EvaluedBarrilSpeed < 0.05) {
  157. // Frena completamente:
  158. EvaluedBarrilSpeed = 0;
  159. }
  160. set (BarrilSpeed, EvaluedBarrilSpeed);
  161. }
  162. BarrilX = eval(BarrilaMover+".X")+EvaluedBarrilSpeed;
  163. // Si ya no está en la pantalla:
  164. if (BarrilX>850) {
  165. // Quitarlo:
  166. removeMovieClip (BarrilaMover);
  167. } else {
  168. // Actualizar posición y girar su parte:
  169. set(BarrilaMover+".X", BarrilX);
  170. setProperty (BarrilaMover, _x, BarrilX);
  171. ParteaRotar = BarrilaMover+".Part";
  172. setProperty (ParteaRotar, _rotation, getProperty(ParteaRotar, _rotation)+EvaluedBarrilSpeed*2);
  173. // Si tocan al personaje y él se está moviendo:
  174. if (I.Player.hitTest(eval(BarrilaMover)) == true && I.Player.Action == "Walking") {
  175. trace("Golpeado");
  176. // Game over:
  177. gotoAndStop (3);
  178. break;
  179. } else {
  180. // Ver si tocó al barril anterior, que está delante:
  181. BarrilAnterior = "I.Barril"+(Moved-1);
  182. if (eval(BarrilaMover).hitTest(eval(BarrilAnterior)) == true) {
  183. // Pasarle la velocidad:
  184. set (BarrilAnterior+".Speed", eval(BarrilAnterior+".Speed")+EvaluedBarrilSpeed);
  185. // Quedar sin velocidad:
  186. set (BarrilSpeed, 0);
  187. }
  188. }
  189. }
  190. } while (Moved<Barriles);
  191. }
185  Seguridad Informática / Hacking / Re: Ayuda nescesito recuperar una cuenta en: 4 Diciembre 2024, 09:14 am
No sé cómo funciona eso, pero podrías pedir a conocidos tuyos que confirmen que esa cuenta es tuya, que publiquen algo diciéndolo. Junta los links a esas publicaciones y envíalos a los admins.
186  Programación / Programación C/C++ / Re: ¿Por qué se muestra mal? en: 3 Diciembre 2024, 09:41 am
Mr.Byte no dices cual era la falla...

¿el while mal escrito? ¿falta de espacios?
187  Programación / Python / Re: Python falla en usar la ñ. en: 3 Diciembre 2024, 04:05 am
Revisado.

Citar
Sería conveniente que uses un IDE para desarrollar en python, por ej Pycharm. El mismo IDE puede corregirte en muchas cosas, mientras estás escribiendo código.
Dice que ocupa casi 3GB... espacio tengo, pero ¿todo eso para escribir y que corrija lo que escribo?

el Bloc de Notas de Windows 7 por defecto guarda en ANSI pues tu primera línea en tu código debe ser: # -*- coding: ANSI -*-
Por ahora haré eso.

Me sirvió lo de la consola también, si habré abierto archivos que se cerraban y no veía qué hacían...

Citar
Flash 5 que de IDE tiene poco, no tiene autocompletar ni ayudas como si lo tienen los Flash modernos tal cual tienen los IDE como PyCharm
A la izquierda tiene la mayoría de posibles comandos. Tiene modo normal y experto. El normal cuando hay un error te lo marca con rojo, además al cliquear la línea, abajo te muestra qué se debe poner. Yo uso el modo experto que es más rápido y libre de editar, pruebo el programa y los errores de sintaxis si hay los dice en la salida.
Lo que me hace falta es que las letras se vean más grandes, pero para eso está el bloc de notas xD

Funcionó.
188  Media / Multimedia / Re: Ver video lentamente. en: 2 Diciembre 2024, 07:29 am
Me sirvió esto:
- Por defecto viene desactivado ese filtro, solo hay que activarlo, cerrar y volver a abrir el MPC-HC y ya podrás aumentar o disminuir la velocidad de reproducción en los WMV y ASF

En cuanto a esto:
Citar
por ejemplo con la tecla 1 se hace zoom negativo, con la tecla 9 haces zoom positivo, con 5 restableces, con 2, 4, 6 y 8 reduces/amplías por los extremos, puedes usar combinaciones con Ctrl o Alt para girar, mover y más
Me parece que la lupa de Windows termina siendo más cómoda, porque si agrandas la imagen y lo que quieres ver cambia donde está, es un lío buscarlo moviendo la pantalla.
189  Programación / Python / Python falla en usar la ñ. en: 2 Diciembre 2024, 04:44 am
cuando le pongo ñ a charset no funciona:
Código
  1. charset = "abcdefghijklmnñopqrstuvwxyz"
  2. with open("passwords.txt", "w", encoding="utf-8") as txt :
  3.  for a in charset :
  4.    for b in charset :
  5.      for c in charset :
  6.        for d in charset :
  7.          txt.write(a + b + c + d + "\n")
¿qué hago para que funcione con ñ?

Citar
El problema puede deberse a cómo Python maneja la codificación al escribir en un archivo. Aunque estás especificando `encoding="utf-8"` al abrir el archivo, puede haber conflictos si el sistema en el que estás ejecutando el script no interpreta correctamente los caracteres extendidos, como la `ñ`.

Aquí tienes una solución que debería funcionar correctamente:

### Solución:

1. **Asegúrate de que tu archivo fuente esté guardado en UTF-8**. Si tu editor de texto no guarda el archivo fuente en UTF-8, la `ñ` podría no ser interpretada correctamente. En editores como VS Code, puedes configurar la codificación en UTF-8.

2. **Verifica que la consola/terminal interprete UTF-8**. Si estás ejecutando el código en una terminal que no maneja UTF-8, podría haber problemas al visualizar o procesar caracteres como la `ñ`.

3. **Código corregido:**

```python
# Definir el charset con la letra ñ
charset = "abcdefghijklmnñopqrstuvwxyz"

# Abrir el archivo en modo escritura, asegurando la codificación UTF-8
with open("passwords.txt", "w", encoding="utf-8") as txt:
    # Generar todas las combinaciones de 4 caracteres
    for a in charset:
        for b in charset:
            for c in charset:
                for d in charset:
                    # Escribir cada combinación en una nueva línea
                    txt.write(a + b + c + d + "\n")
```

4. **Verifica el archivo generado**. Tras ejecutar el código, abre el archivo `passwords.txt` con un editor que soporte UTF-8 para confirmar que las combinaciones con la `ñ` se generan correctamente.

### Qué hacer si sigue sin funcionar:

Si el problema persiste, puede ser útil probar estas opciones:

- **Forzar la codificación UTF-8 en tu entorno Python**. Asegúrate de que Python esté utilizando UTF-8 por defecto. Puedes agregar esta línea al inicio de tu script:

  ```python
  import sys
  sys.stdout.reconfigure(encoding='utf-8')
  ```

- **Revisar el entorno de ejecución**. Si estás en Windows, puedes configurar la consola para que use UTF-8 ejecutando este comando en la terminal antes de correr el script:

  ```cmd
  chcp 65001
  ```

### Explicación del problema:

La `ñ` es un carácter que no está en el conjunto básico ASCII. Si hay un desajuste en la codificación entre tu archivo fuente, el entorno Python o el archivo de salida, podría causar que la `ñ` no se procese correctamente. Al usar `encoding="utf-8"` y asegurarte de que todo tu entorno soporte UTF-8, deberías poder manejar la `ñ` sin problemas.
¿Se supone que en eso está la solución?

Lo que me sucede es que el archivo py se cierra enseguida y no se genera el archivo que quiero.
190  Programación / Desarrollo Web / Re: Cual es el mejor software para foros? en: 1 Diciembre 2024, 23:12 pm
No es un low level run xD

Sobre el juego de la niña, vi una teoría de que fue violada y está, en cierto modo, recordabndo su triste pasado. Pensé que era cierta, ahora al leer Wikipedia no sé, no tiene historia dice.
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 239
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines