Dudas sobre ejercicios funciones

Dudas sobre ejercicios funciones

de Maria Bruno -
Número de respuestas: 10
Escribí usando una función un programa que devuelve si un número entero es primo o no.
Tuve que probar ya que no tengo claro si empieza la iteración con i=2, o con i=3.
Así como lo escribí funciona bien.
Pero si lo pienso no entiendo si num=2 y comienza en i=2 , entonces num%i==0 lo que daría como resultado 'no primo'.
No se si entiende mi duda.

En respuesta a Maria Bruno

Re: Dudas sobre ejercicios funciones

de Federico Andrade -
El tema es que deberías realizar la iteración hasta num-1 ya que siempre num va a ser divisible sobre num.

Saludos
En respuesta a Federico Andrade

Re: Dudas sobre ejercicios funciones

de Maria Bruno -
Por eso mismo no entiendo como funciona la iteración.
Cambio la pregunta, por ejemplo como está escrito el programa 5 sería no primo, sin embargo me devuelve primo. Es decir que: ¿no compara hasta num%num?
Son mis primeros pasos en programación, tengan paciencia!!.
Saludos
En respuesta a Maria Bruno

Re: Dudas sobre ejercicios funciones

de Jorge Visca -
5 es primo si solo es divisible entre 1 y 5. Por lo tanto para saber si 5 es primo, hay que dividir entre 2, 3, y 4, y ver que ninguna de esas divisiones de justo. 
Ese es el método seguro, aunque se pueden ahorrar algunas divisiones.
En respuesta a Jorge Visca

Re: Dudas sobre ejercicios funciones

de Maria Bruno -
De acuerdo con Jorge que 5 es primo.
Este es el programa que escribí es este y me devuelve que 5 es primo ( se que es correcto!!), pero si lo analizo mirando la iteración me parece que no compara num%num==0, porque sino me daria no primo. La duda mía es desde que i hasta que i se realiza la iteración.

# defino la funcion primo
def primo(num):
if num <2:
return "primo"

for i in range(2,num):
if num % i == 0:
return 'no primo'
return 'primo'

#Programa principal
num= input ('ingrese un numero entero:')
pri= primo(num)
print 'Es un numero:',pri


Muchas gracias por las respuestas, voy a seguir probando con los otros ejercicios.
En respuesta a Maria Bruno

Re: Dudas sobre ejercicios funciones

de Andres Aguirre -
Exácto María, la función range() genera una lista de números que corresponde con un intervalo semiabierto, cerrado por izquierda y abierto por derecha. Por tanto, nunca llega al segundo valor que es pasado como parámetro a range().
Por ejemplo, si ejecutamos el interprete Python y escribimos éste código:

>>> for i in range(0, 6):
...     print i
... 

retorna como salida:

0
1
2
3
4
5

Con lo cual podemos ver que la variable i nunca toma el valor 6.
Matemáticamente range(x,y) define una lista de números equivalente a la que define el intervalo [a,b)
saludos
andrés
En respuesta a Maria Bruno

Re: Dudas sobre ejercicios funciones

de Andres Aguirre -
Ojo con las indentaciones, supongo que al pegar el programa las perdiste, pero aviso por si alguien quiere basarse en el ejemplo de María.
saludos

En respuesta a Andres Aguirre

Re: Dudas sobre ejercicios funciones

de Maria Bruno -
Buenísimo Andrés, ahora si!!!! comprendido.
Las indentaciones, son las tabulaciones correspondientes a los bloques???
Si es esto, se perdieron cuando las pegué en el mensaje, pero yo en mi primer intervención subí el archivo numprimo.py y allí están.

Saludos y gracias!!!!
En respuesta a Maria Bruno

Re: Dudas sobre ejercicios funciones

de Andres Aguirre -
Si, las indentaciones se utilizan para definir los bloques. Puede hacerse con tabulación o con espacios, lo importante es ser consistente, si usamos espacios no podemos mezclar tabulación y viceverza. Muchos editores de texto (gedit es uno de ellos) permiten cambiar el caracter de tabulación por espacios para no cometer errores y simplificar a la hora de escribir. Veo que en el .py indentaste con espacios y quedó perfecto!
saludos
andrés

En respuesta a Maria Bruno

Re: Dudas sobre ejercicios funciones

de Federico Andrade -
Una forma que tenés para ver que valores está tomando la variable "i" es intercalar la sentencia

print i

inmediatamente luego del for, de forma de ver que valores toma.

Saludos