[ Foro de Python ]
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): "));
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 ;-)
Perfecto, gracias, lo probaré!
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.
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.)