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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Programación General / Re: ValueError en Python en: 24 Junio 2022, 03:47 am
Estaba completamente perdido, jamás se me habria ocurrido usar el ciclo for y después while antes de la sentencia try, Mil gracias reymosquito, era exactamente lo que necesitaba, espero superar mas fácilmente las siguientes tareas y mejorar el nivel.

es básicamente lo mismo agregando un contador y un bucle más los condicionales, veo que estás aprendiendo, pero esto es lo más simple de python, no debería costarte si quieres seguir avanzando.
Código
  1. #-*- coding:utf-8 -*-
  2. from random import randint
  3.  
  4. def main():
  5.    level=get_level()    
  6.    correct=0
  7.    error = 0
  8.    conteo = 0
  9.    for x in range(10):
  10.        x, y = generate_integer(level)
  11.        z = x + y
  12.        while True:
  13.            try:
  14.                answer=int(input(f"{x} + {y} = "))        
  15.            except ValueError:
  16.                conteo+=1
  17.                print("EEE")
  18.                if conteo == 2:
  19.                    error+= 1
  20.                    conteo = 0
  21.                    break
  22.            else:
  23.                if answer != z:
  24.                    conteo+=1
  25.                    print("EEE")
  26.                    if conteo == 2:
  27.                        error+= 1
  28.                        conteo = 0
  29.                        break                    
  30.                else:
  31.                    correct+=1
  32.                    break
  33.    print(f"\nScore: Correct = {correct} Error = {error} ")
  34.  
  35. def get_level():
  36.    while True:
  37.        try:
  38.            level=int(input("Level: "))
  39.        except ValueError:
  40.            pass
  41.        else:
  42.            if level in range(1,4):
  43.                return level
  44.  
  45. def generate_integer(level):
  46.    dic={1:101,2:10,3:1}
  47.    return randint(100//dic[level],999//dic[level]),randint(100//dic[level],999//dic[level])
  48.  
  49. if __name__=="__main__":
  50.    main()
  51.  
  52.  

Supongo que eso es lo que buscás.

Feliz noche.
2  Programación / Programación General / Re: ValueError en Python en: 23 Junio 2022, 03:41 am
Hola, perdón pero es muy feo el código, igual el problema es que estás manejando excepciones y no le decís que haga algo sino que las pase con:

          
Código
  1.  
  2.            i+=1
  3.            correct+=1
  4.        except ValueError:
  5.            print("EEE")

solucionarías ese detalle

Dicho sea de paso hay una sección de scripts

edito: te muestro otra forma de escribir ese código, no es la mejor pero simplifica bastante:

Código
  1. #-*- coding:utf-8 -*-
  2. from random import randint
  3.  
  4. def main():
  5.    level=get_level()    
  6.    correct=0
  7.    error = 0
  8.    for x in range(10):
  9.        x, y = generate_integer(level)
  10.        z = x + y
  11.        try:
  12.            answer=int(input(f"{x} + {y} = "))        
  13.        except ValueError:
  14.            print("EEE")
  15.            error+=1
  16.        else:
  17.            if answer != z:
  18.                print("EEE")
  19.                error+=1
  20.            else:
  21.                correct+=1
  22.    print(f"\nScore: Correct = {correct} Error = {error} ")
  23.  
  24. def get_level():
  25.    while True:
  26.        try:
  27.            level=int(input("Level: "))
  28.        except ValueError:
  29.            pass
  30.        else:
  31.            if level in range(1,4):
  32.                return level
  33.  
  34. def generate_integer(level):
  35.    dic={1:101,2:10,3:1}
  36.    return randint(100//dic[level],999//dic[level]),randint(100//dic[level],999//dic[level])
  37.  
  38. if __name__=="__main__":
  39.    main()
  40.  

Saludos reymosquito, me ha servido bastante tu sugerencia (tanto en orden como en solucion) sin embargo lo siguiente introduce más dificultad al código y no he logrado resolverlo. El problema consiste en lo siguiente:

- El algoritmo debe permitir dos oportunidades más de responder correctamente el problema antes de registrar error.

Para tal caso debe mostrar nuevamente el mismo problema, pero no sé como hacer eso. Intenté copiar la linea
Código:
answer=int(input(f"{x} + {y} = "))
pero aunque parece funcionar bien, otras veces genera errores.

Si de pronto sabes como indicarle dentro de la excepción o dentro del condicional que me repita la misma pregunta otras dos veces antes de contar error y saltar a la siguiente pregunta, te estare muy agradecido.

Llevo como dos semanas intentando varias opciones pero sin resultado.

Muchas gracias


3  Programación / Programación General / Re: ValueError en Python en: 12 Junio 2022, 21:08 pm
Hola, perdón pero es muy feo el código, igual el problema es que estás manejando excepciones y no le decís que haga algo sino que las pase con:

          
Código
  1.  
  2.            i+=1
  3.            correct+=1
  4.        except ValueError:
  5.            print("EEE")

solucionarías ese detalle

Dicho sea de paso hay una sección de scripts

edito: te muestro otra forma de escribir ese código, no es la mejor pero simplifica bastante:

Código
  1. #-*- coding:utf-8 -*-
  2. from random import randint
  3.  
  4. def main():
  5.    level=get_level()    
  6.    correct=0
  7.    error = 0
  8.    for x in range(10):
  9.        x, y = generate_integer(level)
  10.        z = x + y
  11.        try:
  12.            answer=int(input(f"{x} + {y} = "))        
  13.        except ValueError:
  14.            print("EEE")
  15.            error+=1
  16.        else:
  17.            if answer != z:
  18.                print("EEE")
  19.                error+=1
  20.            else:
  21.                correct+=1
  22.    print(f"\nScore: Correct = {correct} Error = {error} ")
  23.  
  24. def get_level():
  25.    while True:
  26.        try:
  27.            level=int(input("Level: "))
  28.        except ValueError:
  29.            pass
  30.        else:
  31.            if level in range(1,4):
  32.                return level
  33.  
  34. def generate_integer(level):
  35.    dic={1:101,2:10,3:1}
  36.    return randint(100//dic[level],999//dic[level]),randint(100//dic[level],999//dic[level])
  37.  
  38. if __name__=="__main__":
  39.    main()
  40.  

Saludos reymosquito, tienes toda la razón, aún tengo un largo camino or recorrer y pulir la estetica del codigo hace parte del aprendizaje.

Mil gracias por tu sugerencia, la pondré en práctica y estare comentando los resultados.
4  Programación / Programación General / ValueError en Python en: 11 Junio 2022, 02:46 am
Saludos a todos los miembros de esta bella comunidad.

como ya se me ha hecho costumbre, comparto los atascos que me encuentro a medida que voy aprendiendo un poco de python.

En esta ocasion he realizado un codigo para generar sumas aleatorias y preguntar al usuario la respuesta. Si el valor ingresado No es entero positivo, o no es un numero me debe mostrar un mensaje de error "EEE" y volver a preguntar.

si ingreso una respuesta incorrecta numerica me funciona bien, sin embargo no sucede lo mismo si ingreso texto. Tengo entendido que si la variable "answer" la denoto con un int antes de input me va a gnerar un ValueError si no ingreso un entero.

Comparto el codigo para su amable observacion de algun posible error u omision.

Código:
import random

def main():
   
    level=get_level()   

    i=1
    correct=0


    while i<=10:
        try:

            x, y = generate_integer(level)
            z=x+y
            answer=int(input(f"{x} + {y} = "))
            error=0
         

            while answer != z:

                print("EEE")
                answer=int(input(f"{x} + {y} = "))
                error+=1
                if error==2:
                    print(f"{x} + {y} = {z}")
                    break
                i+=1
               

            i+=1
            correct+=1
        except ValueError:
            pass

    print("Score:",correct)

def get_level():
    while True:
        try:
            level=int(input("Level: "))
            if level not in [1,2,3]:
                raise ValueError

            return level
            break

        except ValueError:
            pass



def generate_integer(level):
    if level==1:
        a=random.randrange(0,9)
        b=random.randrange(0,9)
    elif level==2:
        a=random.randrange(10,99)
        b=random.randrange(10,99)
    else:
        a=random.randrange(100,999)
        b=random.randrange(100,999)

    return a, b


if __name__=="__main__":
    main()

No explico todo el codigo para no extender más el post, pero si requieren de más explicacion, con mucho gusto responderé.

agradezco las pistas que me puedan otorgar.

feliz noche

PD: He intentado con while answer != z or isnumeric(answer)==False: en la linea 20 pero sin resultados.
5  Programación / Scripting / Re: error de sintaxis match case en python en: 18 Mayo 2022, 02:11 am
Hola Juan, me alegro que hayas podido solucionar el problema que tenías con tú código y te agradezco por comentarnos como lo has solucionado, esto ayudará a otros usuarios.

Feliz noche para vos también!


Saludos

Por supuesto Daniel, con gusto comparto el procedimiento:

Actualicé escribiendo las siguientes lineas en el terminal:


sudo apt install software-properties-common -y

sudo add-apt-repository ppa:deadsnakes/ppa -y

sudo apt update

sudo apt install python3.10

Lo anterior lo pueden encontrar en el siguiente enlace: https://www.linuxcapable.com/es/how-to-install-python-3-10-on-linux-mint-20/

Y para ejecutar el programa escribo "python3.10 house.py"

Mil gracias por estar atentos y espero que les sea útil esta información.
6  Programación / Scripting / Re: error de sintaxis match case en python en: 17 Mayo 2022, 04:12 am
Saludos.

Luego de indagar mas en el tema, encontre que la última versión de python es la 3.10 y la instale. La que tenia (python 3.6) no soportaba esa sintaxis.

Espero que a alguien mas le sea de utilidad esta información.

Feliz noche a todos.
7  Programación / Scripting / error de sintaxis match case en python en: 17 Mayo 2022, 03:36 am
Saludos comunidad.

les comparto esta situacion que me sucede con el comando match case:

Tengo el codigo que escribo a continuacion, el cual ejecuto en dos plataformas, con exactamente el mismo codigo.

Código:
name=input("What's your name?: ")

match name:
    case "Harry":
        print("Gryffindor")
    case "Hermione":
        print("Gryffindor")
    case "Ron":
        print("Gryffindor")
    case "Draco":
        print("Slytherin")
    case _:
        print("Who?")

El codigo tal como está lo ejecuto en visual studio code en la nube y funciona correctamente.

Después lo ejecuto en python version 3.6.9 en Linux mint y me sale el siguiente error:

Código:
  File "house.py", line 3
    match name:
                      ^
SyntaxError: invalid syntax

Alguién me podría sacar de esta inquietud tan extraña?

Mil gracias y feliz noche
8  Programación / Programación General / Re: Obtener valor numerico y posicion en una cadena de caracteres - python en: 28 Abril 2022, 03:49 am
Saludos XyZed.

De hecho me estaba funcionando parcialmente, solo que al publicar  me omitió el símbolo "[ ]" y su contenido, pero tienes toda la razón, no estaba cumpliendo con el requisito.

Código:
plate=input("Plate: ")
n=len(plate)
for i in range(n):
    if plate[i].isnumeric()==True:
        break
num=plate[i]
print(num)

Muchas gracias por tu aporte, lo voy a ensayar para lograr el objetivo.

Aún estoy comenzando y como dices tengo mucho por leer al respecto.

Gracias por tu paciencia y feliz noche.
9  Programación / Programación General / Re: Obtener valor numerico y posicion en una cadena de caracteres - python en: 27 Abril 2022, 04:27 am
Señores lo logré,

después de una semana pensando, y apenas unos minutos de haber publicado el post, se me ocurrió otra forma.

lo comparto para quienes puedan tener la misma situación:

plate=input("Plate: ")
n=len(plate)
for i in range(n):
    if plate.isnumeric()==True:
        break
num=plate
print(num)

para mi sigue el trabajo porque esto es solo una parte de la tarea, seguiré pensando.

Espero que esta solución sea de ayuda a muchas personas.

Feliz día.
10  Programación / Programación General / Obtener valor numerico y posicion en una cadena de caracteres - python en: 27 Abril 2022, 03:56 am
Saludos a todos los miembros del foro.

Procuraré explicar el código que tengo en mente de la manera mas clara posible con las siguientes instrucciones quedebe cumplir:

1. Debe solicitar al usuario ingresar texto que puede ser alfanumérico.
2. Para el texto ingresado por el usuario debe detectar la posición del primer número e indicar de que numero se trata.

Por ejemplo, si el usuario ingresa el código ABC123, la posición es 3 (teniendo en cuenta que comienza en 0) y el número es 1.

hasta el momento tengo el siguiente código y creo que estoy cerca, pero más abajo inidco el problema con la lógica.

plate=input("Plate: ")

for char in plate:
    i=0
    for i in range(10):
        if char.find(f"{i}")!=-1:
                                 
            print(i)
            break

El problema es que cuando termina el ciclo interno no se detiene y continúa con el siguiente caracter de la palabra ingresada, es decir, si ingreso AB45 me da como resultado:

4
5

en lugar de solo:
4

si adiciono un break por fuera del for interior, simplemente no muestra nada, y si adiciono print(i) por fuera de los ciclos me muestra solo el numero 9 (como si el ciclo hubiese continuado hasta el último valor de i)

Alguien sabe si voy por buen camino o hay otra forma más sencilla de resolver este requisito?

Mil gracias por su atención y feliz día.
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines