Python - ayuda con codigo

 
Vista:

ayuda con codigo

Publicado por elmaschingon1369 (1 intervención) el 06/07/2023 04:14:58
hola mi hicieron hacer esto en clases:

2. Crea un programa que permita almacenar en una lista solamente números primos y que no se encuentren repetidos.
El programa debe cumplir con lo siguiente:
1. Agregar elemento a la lista
2. Mostrar lista
3. Mostrar el mayor y menor elemento de la lista
4. Mostar la suma de todos los elementos de la lista
5. Mostrar Pares e impares de la lista
6. Buscar y eliminar un elemento de la lista
7. Ordenar de menor a mayor
8. Ordenar de mayor a menor
9. Salir

Este seria el codigo que hice:

def primos(Numero) :
Es_Primo=True
if Numero == 1 :
Es_Primo=False
else :
for x in range(2, Numero-1):
if Numero % x == 0:
Es_Primo=False
break
return Es_Primo


def OrdenarNumero_menor_mayor(lista) :
lista_ordenada= sorted(lista)
return lista_ordenada

def OrdenarNumero_mayor_menor(lista) :
lista_ordenada= sorted(lista, reverse= True)
return lista_ordenada
#sorted: ordenar listas de acuerdo a lo que pide
lista = []

while True: #menu de opciones
print(" ---------------------------------------")
print("1. Agregar elemento a la lista")
print("2. Mostrar lista")
print("3. Mostrar el mayor y menor elemento de la lista ")
print("4. Mostrar la suma de todos los elementos de la lista")
print("5. Mostrar numeros pares e impares de la lista")
print("6. Buscar y eliminar un elemento de la lista")
print("7. Ordenar de menor a mayor")
print("8. Ordenar de mayor a menor")
print("9. Salir del programa")
print(" ---------------------------------------")
opcion = int(input("ingrese una opción: "))


#agregar elemento a la lista
if opcion == 1:
agregar = int(input("Ingrese un número: "))
if primos(agregar):
print(f"{agregar} es un número primo")
elif agregar not in lista:
lista.append(agregar)
print(f"{agregar} no es un número primo")
else:
print("El número ingresado ya está en la lista o no es primo")


#----------------------------------------------



#Mostrar lista
elif opcion == 2:
print(lista)



#Mostrar el mayor y menor elemento de la lista

elif opcion == 3:
mayor = max(lista)
menor = min(lista)

print("El mayor número de la lista es:", mayor)
print("El menor número de la lista es:", menor)

#Mostrar la suma de todos los elementos
elif opcion == 4:
suma = sum(lista)
print(suma)



#Mostrar numeros impares e pares del la lista
#---------------------------------------------------------
elif opcion == 5:
pares = [num for num in lista if num % 2 == 0]
print("Números pares:", pares)
#---------------------------------------------------------
impares = [num for num in lista if num % 2 != 0]
print("Números impares:", impares)




#Buscar y eliminar elementos de la lista
elif opcion == 6:
agregar = input("Ingrese el número a buscar y eliminar: ")
if agregar in lista:
lista.remove(agregar)
print("Número eliminado correctamente.")
else:
print("El elemento no se encuentra en la lista.")

#Ordenar de menor a mayor
elif opcion == 7:
if len(lista) == 0:
print("No hay ningún número en la lista.")
else:
lista_ordenada = OrdenarNumero_menor_mayor(lista)
print("La lista de menor a mayor es:", lista_ordenada)

#Ordenar de mayor a menor
elif opcion == 8:
if len(lista) == 0:
print("No hay ningún número en la lista.")
else:
lista_ordenada2 = OrdenarNumero_mayor_menor(lista)
print("La lista de mayor a menor es:", lista_ordenada2)

elif opcion == 9:
print ("Programa finalizado")
break

else:
print("Opcion inválida. Por favor intente de nuevo")

Pero el problema es que almacena los numeros que no son primos en vez de almacenar los numeros primos
me podrian ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

ayuda con codigo

Publicado por tincopasan (1082 intervenciones) el 06/07/2023 06:32:18
hola: hay varias cosas desde mi perspectiva
1)
1
2
3
4
5
6
7
if opcion == 1:
        agregar = int(input("Ingrese un número: "))
        if primos(agregar) and agregar not in lista:
            lista.append(agregar)
            print(f"{agregar} es un número primo")
        else:
            print("El número ingresado ya está en la lista o no es primo")

en tu código no lo estás agregando al ser primos, solo si no está en la lista, lo mejor es hacer ambas cosas en simultaneo, que sea primo y que no esté en la lista.

2)me parece ridículo recorrer toda la lista comparando si es par o impar, el único número primo par es el 2. o sea que si está , listo. De la misma forma todos los otros son impares.

3)en la opción eliminar estás buscando una cadena y la lista contiene enteros, nunca encontrará el número a eliminar

4) la opción 3 te dará error si la ejecutas antes de cargar algún valor válido, lo cual me lleva a que no hay control de errores.

5) hay cosas redundantes, pero eso es apreciación personal.

una cosa más, hay una tag </>Cödigo si lo usas en un código elegido pondrá el código respetando las sangrías lo cual lo hará más legible.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar