clase4
Ejercicio preparatorio: Determinar si un número es primo o no
El siguiente código verifica si un número es primo. Hay muchas maneras de hacer esto y esta está lejos
de ser la mejor, solo se muestra a modo de ejemplo.
n = int(raw_input('Verificar si este nro. es primo: '))
primo = True
for i in xrange(2,n):
if n%i == 0:
print '%s no es primo' %n
primo = False
break
ifprimo:
print '%s es primo' %n
El uso de la variable primo sirve para "marcar" que el flujo del programa pasó por un lugar determinado. A
eso se lo denomina "flag".
Ejemplo de uso de este código:
>>>
Verificar si este nro. es primo: 25
No es primo
>>>
Verificar si este nro. es primo: 61
61 es primo
Usando else en el for. El bloque bajo el else se ejecuta en el caso que todos los elementos delciclo se
hayan recorrido (o sea, que no haya salido por break). Esto evita usar el flag del ejemplo anterior.
n = int(raw_input('Verificar si este nro. es primo: '))
for i in range(2,n):
if n%i == 0:
print '%s no es primo' %n
break
else:
print '%s es primo' %n
Ejemplo de uso:
>>>
Verificar si este nro. es primo: 25
No es primo
>>>
Verificar si este nro. es primo: 61
61 es primo
Funciones
Ya hemosusado funciones si consideramos a las funciones incoorporadas en Python (built-in).
Ejemplos:
>>> len([2,3,4,5])
4
>>> max([1,6,98,2,32,21,8])
98
>>> range(5)
[0, 1, 2, 3, 4]
>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__getnewargs__', '__getslice__', '__gt__',
'__hash__', '__init__', '__le__','__len__', '__lt__', '__mod__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', '_formatter_field_name_split',
'_formatter_parser', 'capitalize', 'center', 'count', 'decode',
'encode', 'endswith', 'expandtabs', 'find', 'format', 'index',
'isalnum', 'isalpha', 'isdigit', 'islower','isspace', 'istitle',
'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase',
'title', 'translate', 'upper', 'zfill']
Las funciones len() (de lenght, longitud), max(), y min() tienen nombres bastante autoexplicativos. La
función dir() lista los métodos (funciones)asociadas a un objeto, en este caso vemos los métodos
asociado a las cadenas.
Las funciones usan parámetros o argumentos (buscarlos en los ejemplos de arriba). Se pueden usar
funciones sin parametros:
>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', '__package__',
'esprimo', 'i', 'main', 'n', 'primo']
En el caso de dir() sin parámetros, se muestran los nombres de las variables que están enmemoria en el
momento de ser llamada.
Otras funciones requieren parámetros de manera obligatoria:
>>> range()
Traceback (most recent call last):
File "
range()
TypeError: range expected at least 1 arguments, got 0
El concepto es el mismo: Un nombre que invoca un conjunto de instrucciones para ser ejecutado. Es una
manera de “modularizar” nuestro código.
Creandofunciones
Forma genérica
def Nombre(param1, param2, ….):
''' DOCSTRING '''
return DATA
Por ejemplo la siguiente función convierte el valor ingresado de pulgadas a centimetros:
def p_cm(p):
''' Ingresa pulgadas, devuelve centimetros '''
cm = p * 2.54
return cm
Ahora estamos en condiciones de "funcionalizar" el código anterior que determinaba si un número es o
no es primo:
def esprimo(n):for i in range(2,n):
if n%i == 0:
return False
return True
Usando funciones
El modo general es:
>>> Nombre(parametro)
Ejemplos:
Usando la función p_cm (función que convierte de pulgadas a centimetros):
>>> print p_cm(5)
12.7
Usando la funcón esprimo (devuelve True si n es primo y False en caso contrario):
>>> print esprimo(2)
True
>>> print esprimo(5)
True
>>> print esprimo(10)
False
Todas las...
Regístrate para leer el documento completo.