Python - Pandigital - primo - python

 
Vista:

Pandigital - primo - python

Publicado por Charlz (3 intervenciones) el 21/04/2020 04:22:14
Hola, tengo un ejercicio donde piden escribir una función panprimo , que determine si un numero es pandigital (o seá, que contiene todos los dígitos del 0 al 9 al menos una vez) y si al mismo tiempo, sus últimos 3 dígitos conforman un número primo, retornando True o False según corresponda.

ej:
2424643 no es pandigital y 643 es primo--> False.

1234567890 cumple que es pandigital, 890 no es primo -->False.

10123485769 cumple que es pandigital y 769 es primo --> True.

El curso es introductorio, y me dan estas sugerencias:

ip1: Puedes convertir un entero a una cadena de texto con el método str(numero), y puedes verificar si alguna letra está en el esta cadena de texto haciendo if letra in string: ...

Tip2: Un número es primo si solo es divisible por 1 y por sí mismo. Para obtener los últimos tres dígitos, puedes obtener el resto del número en su división con 100.


he hecho este codigo, pero no me da el resultado, algo debo estar haciendo mal. Me podrían dar alguna sugerencia?.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def panprimo(n):
     numeros = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
     digpan = str(n)
     digprimo = n % 1000
 
       def pandigital(n):
          pandigital=True
          for i in numeros:
              if i not in digpan:
                    pandigital= False
 
     def primo(n):
       primo=True
       for i in range(2, digprimo):
            if digprimo % i == 0:
                 primo = False
 
 
     if pandigital and primo:
          print("True")
     else:
          print("False")
 
 
print(panprimo(2424643))
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

Pandigital - primo - python

Publicado por tincopasan (1082 intervenciones) el 21/04/2020 06:28:51
hola:
te voy a ayudar, más allá de que no hago tareas, por el simple hecho de que intentaste un código, por más que no funcione.
lo hice lo más básico posible, ya que es un curso introductorio. Cumple los tips, salvo que tiene que ser divisible por 1000 no por 100
supongo que más básico no se puede hacer, suponiendo que ya hayas visto listas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#-*- coding: utf -8 -*-
 
def pandigital(numero):
    n=str(numero)
    if len(n) < 10:
        return False
    else:
        lista=["0","1","2","3","4","5","6","7","8","9"]
        for x in n:
            if x in lista:
                lista.remove(x)
        if len(lista) == 0:
            return True
        else:
            return False
 
def primo(numero):
    n = numero % 1000
    for i in range(2,n):
        if (n% i)==0:
            return False
        return True
 
def panprimo(n):
    if pandigital(n) and primo(n):
        return True
    return False
 
 
print(panprimo(1234567890 ))
print(panprimo(10123485769 ))
Saludos.
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

Pandigital - primo - python

Publicado por Charlz (3 intervenciones) el 21/04/2020 06:49:33
Gracias tincopasan. Lo he intentado mucho tiempo y no me daba lo que esperaba. No tengo opciones a consultas en el curso, por lo que no tengo muchas opciones a resolver dudas especificas. Con esto me dejas claro varias dudas. Sin embargo, me quedó una.
¿Porque daba como resultado "none"?. Que significa?


Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
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

Pandigital - primo - python

Publicado por tincopasan (1082 intervenciones) el 21/04/2020 06:53:40
eso es porque al terminar una función no estás usando return para que la función devuelva algo, que ese es su objetivo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar

Pandigital - primo - python

Publicado por Charlz (3 intervenciones) el 21/04/2020 06:54:35
Clarisimo. Gracias men. Saludos
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
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

Pandigital - primo - python

Publicado por tincopasan (1082 intervenciones) el 02/02/2021 23:20:26
después de mucho tiempo hay un error en el indentado de la función primo, la correcta es:

1
2
3
4
5
6
def primo(numero):
    n = numero % 1000
    for i in range(2, n):
        if (n % i) == 0:
            return False
    return True
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