[ Foro de Python ]

Optimizar mi código

27-Nov-2022 21:04
Invitado (Brand)
4 Respuestas

Hola, soy nuevo en la programación y estoy aplicando lo que he aprendido en pequeños proyectos, me gustaria su opinion con este código que te dice si un numero es par o impar, despues te pregunta si quieres ingresar otro numero para volver a iniciar el programa, alguna sugerencia para optimizarlo?

print("Bienvenido, este programa indica si un número es par o impar");
r = str;
intento = True
while intento == True:
   if r == "n":
       intento == False;
       print("Programa terminado...");
       break
   else:
       var = int(input("Ingrese un numero entre 1 y 1000: "));
       if (var % 2 == 0):
           print("¡Es un número par!\n");
           r = str(input("Quiere ingresar otro número?(s/n): "));
       else:
           print("¡Es un número impar!\n");
           r = str(input("Quiere ingresar otro número?(s/n): "));
           


27-Nov-2022 23:53
Invitado (juanjo)

hola brand

input devuelve un string por lo que no hace falta convertirlo en string

otra solución:

PETICION = f'\nDame un número y te diré si es par o impar [0 para salir]: '

while num := int(input(PETICION)):
   if num & 1:
       par_impar = 'impar'
   else:
       par_impar = 'par'

   print(f'El {num} es un número {par_impar}.')

saludos ;-)


28-Nov-2022 20:04
Invitado (Brand)

Perfecto, gracias, lo probaré!


29-Nov-2022 17:57
Invitado (an?nimo y molesto)

1)- La solución que Ud suministra, da el siguiente error:

while num := int(input(PETICION)):
              ^
SyntaxError: invalid syntax

Qué versión de Python usa? yo estoy probando con 3.7.9 y 3.10.0... es reciente con respecto a su respuesta. No estoy seguro que esa sintaxis sea válida.

2)- Los nombres de variables no deben ir en mayúsculas...es una anotación molesta para leer
Menos si no se conserva una convención de usar todas las variables con mayúsculas o todas con minúsculas o algo que se respete siempre...por ejemplo Ud escribe num  y luego otra PETICION....una es minusculas y la 2da toda mayúsculas.

3)- PETICION = f'\nDame un número y te diré si es par o impar [0 para salir]: ' no es un string que necesite formato, pero bueno...no afecta el f''
Cabe objetar que es una mejor forma decir:
print("Dame un número y te diré si es par o impar [0 para salir]: ")
peticion = int(input()) # lo cual no es de lo mejor por lo siguiente que le estoy por decir abajo...

Y por otro lado...Ud debe siempre hacer la salvedad de que lo que se ingresa puede ser cualquier tipo de dato....si se ingresa un 234e2e2   es un tipo str y va a dar error...quién dijo que siempre van a ingresar un int ??   ....bueno, entonces puede agregar un:

print("Dame un número y te diré si es par o impar [0 para salir]: ")
peticion = input() # esto es lo mejor...el dato que entre original...luego se castea o no
try:
   peticion = int(peticion) # por ej aquí castea
except:
   print(f'\nUd es o se hace? El dato {peticion} genera error...verifiquelo !\n')

y si peticion es vacío ????.....la dejo picando,,,

4)- Si Ud. castea un número entero pero con coma flotante (float), va a sufrir pérdida de datos por lo que el número ya no será lo mismo. Esto a Ud no le va a afectar pero sépalo para un futuro debido a que si le piden hacer cálculos por ejemplo...va a estar frito. Trate de castear el dato pero sin perder información. Solo cambiar el tipo de dato o ajustar lo necesario para que eso no pase.

5)- Ojo con la identación ... IndentationError: unindent does not match any outer indentation level
Python nos pide que identemos los renglones como corresponda

6)- [0 para salir]:   ..pero nunca sale (?) porque no hay nada que tome un cero para generar una salida....
Prueben algo similar a esto:

import sys
print("Ingrese bla bla: ")
peticion = input()
if (peticion == '0'):
   sys.exit(0)
# continúa try casteada except bla bla...

7)- cucu, cucu, cantaba la rana.
cucu cucu, debajo del agua.
cucu cucu, pasó un caballero.
cucu cucu, con capa y sombrero.


saludos.


01-Dec-2022 21:02
Invitado (juanjo)

hola brand

este es el mismo código con alguna línea menos:

https://www.online-ide.com/PWVImxscSG

saludos ;-)


hola anónimo

el operador morsa o walrus se introdujo con la PEP 572 en Python 3.8

los nombres de variables por convención se escriben en minúscula y también
por convención las constantes en python se escriben en mayúsculas, PEP8

el "int(input(PREGUNTA))" queda claro y se ajusta al enunciado que trata de
saber si un número es par o impar

copia el código y pegalo en un editor con tipografía monoespaciada, verás que
la identación es la correcta PEP8

si pruebas en código comprobarás que al introducir en cero el programa sí termina

suerte ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)