|
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. #-*- coding:utf-8 -*- from random import randint def main(): level=get_level() correct=0 error = 0 conteo = 0 for x in range(10): x, y = generate_integer(level) z = x + y while True: try: answer=int(input(f"{x} + {y} = ")) except ValueError: conteo+=1 print("EEE") if conteo == 2: error+= 1 conteo = 0 break else: if answer != z: conteo+=1 print("EEE") if conteo == 2: error+= 1 conteo = 0 break else: correct+=1 break print(f"\nScore: Correct = {correct} Error = {error} ") def get_level(): while True: try: level=int(input("Level: ")) except ValueError: pass else: if level in range(1,4): return level def generate_integer(level): dic={1:101,2:10,3:1} return randint(100//dic[level],999//dic[level]),randint(100//dic[level],999//dic[level]) if __name__=="__main__": main()
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: i+=1 correct+=1 except ValueError: 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: #-*- coding:utf-8 -*- from random import randint def main(): level=get_level() correct=0 error = 0 for x in range(10): x, y = generate_integer(level) z = x + y try: answer=int(input(f"{x} + {y} = ")) except ValueError: print("EEE") error+=1 else: if answer != z: print("EEE") error+=1 else: correct+=1 print(f"\nScore: Correct = {correct} Error = {error} ") def get_level(): while True: try: level=int(input("Level: ")) except ValueError: pass else: if level in range(1,4): return level def generate_integer(level): dic={1:101,2:10,3:1} return randint(100//dic[level],999//dic[level]),randint(100//dic[level],999//dic[level]) if __name__=="__main__": main()
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 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: i+=1 correct+=1 except ValueError: 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: #-*- coding:utf-8 -*- from random import randint def main(): level=get_level() correct=0 error = 0 for x in range(10): x, y = generate_integer(level) z = x + y try: answer=int(input(f"{x} + {y} = ")) except ValueError: print("EEE") error+=1 else: if answer != z: print("EEE") error+=1 else: correct+=1 print(f"\nScore: Correct = {correct} Error = {error} ") def get_level(): while True: try: level=int(input("Level: ")) except ValueError: pass else: if level in range(1,4): return level def generate_integer(level): dic={1:101,2:10,3:1} return randint(100//dic[level],999//dic[level]),randint(100//dic[level],999//dic[level]) if __name__=="__main__": main()
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. 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. 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: 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. 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.
|
|
|
|
|
|
|