Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Algoritmos y Estructuras de Datos. - Clase 1 - Parte 1 - Syntaxis Basica de Python - Cuerpo Docente Profesor: Dr. Diego Agustín Ambrossio. Jefe de Trabajos Practicos: Anl. Sis. Angel Leonardo Bianco. Día/Horario : Teoria: Martes 19h00 - 23h00. Practica: Jueves 17h00 - 19h00. Material adaptado de la cátedra "Introduction to Programming" de la Université du Luxembourg. Gracias a mis estimados colegas Dr. Giovanni Casini (ISTI-CNR) y Dr. Xavier Parent (TU Wien)!! Resumen: Estudiaremos distintas estructuras de datos y cómo programar algoritmos para hacer uso eficientes de ellas. Utilizando el lenguaje de programación Python, haremos foco en la programación procedural, introduciendo algunos conceptos de la progrmación Orientada a Objetos. Finalmente, cómo optimizar algunos typos de algoritmos particulares. Algunos de los temas a estudiar: Estructuras de Datos. Recursividad. Objetos en Python. Algoritmos de Ordenamiento y Busqueda. Archivos. Complejidad Computacional. Nociones de Computabilidad, Verificación y Validación. El material de la cáterda y todos los recursos necesarios estarán disponibles en el Campus Virtual. Evaluación General 2 Examenes Parciales Ejercicios de entrega obligatoria. Trabajos Grupales. Aprobación: Entrega de los ejercicios obligatorios / Trabajos Grupales. Calificación de 4 (cuatro) o más, en los examenes parciales. Promoción Calificación de 6 o más en cada examen parcial y un promedio general superior a 7. Operaciones Simples en Python Operaciones Aritmenticas 8 2 + 6 # Suma 2 - 19 # Resta -17 54 16.5 16 5 9 Operaciones Lógicas Las operaciones lógicas nos devulven un "Valor de Verdad" como resultado. Verdadero ⇒ ⇒ True True Falso ⇒ ⇒ False False False True False True El operador "or or " (cómo muchas de las funciones en Python) esta optimizado. Es decir, es "lazy" (peresozo), si queremos evaluar la expresión P1 1 or or P2 2 y P1 1 es verdadera, entonces P1 1 or or P2 2 tiene como resultado final "verdadero" (True True ) aun antes de evaluar P2 2 - 19 # Resta 2 * 27 # Multiplicación 165 / 10 # Divición. 165 // 10 # Cociente de la divición Euclidiana (parte entera) 165 % 10 # Resto de la divición Euclidiana. 3 ** 2 # Potencia 1 == 2 # Igualdad 1 != 2 # Desigualdad 1 < 2 # menor 1 > 2 # mayor 1 <= 2 # menor o igual 1 >= 2 # mayor o igual not(True) # El operador lógico de "NEGACIÓN" True and False # El operador lógico "Y" True or False # El operador lógico "O" 2 . --------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[13], line 4 1 # No tiene sentido, la varialbe 'var' no esta definida. 2 # Ejecutar esta linea nos generara un error. ----> 4 var == True # NameError: name 'var' is not defined True --------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[15], line 4 1 # En el siguiente caso var==True nos genera un error, 2 # y el programa finaliza. ----> 4 var == True or 1 == 1 NameError: name 'var' is not defined Estructura de un algoritmo en Pythom Asignaciones Sentencias Decisión Repeticiones Iteraciones Assignación y tipos de variales en Python. Como en cualquier otro lenguaje de programación, podemos asignar valores a un "nombre de variable". Un nombre de variable, es un identificador alphanumerico el cual esta asociado a un espacio de memoria. En Python utilizamos el symbolo =. (en contraste con el operador ==). Cada valor que le asignamos a una variable, tiene asignado un tipo, el cual definira el tipo de la variable a cual el valor es asignado. Es decir, en Python el tipo de una variable es asignado dinamicamente durante la ejecución del programa, dependiendo del valor contenido. Nota: la función print nos permite escribir en la pantalla/consola. # No tiene sentido, la varialbe 'var' no esta definida. # Ejecutar esta linea nos generara un error. var == True # # En el siguiente caso 1 == 1 es verdadero, # el operador 'or' no evaluara la parte var==True # (no nos aparece el error) 1 == 1 or var == True # En el siguiente caso var==True nos genera un error, # y el programa finaliza. var == True or 1 == 1 n_entero = 5 # Un número entero n_con_comma = 0.3 # Un número de punto flotante v_bool = True # Un valor Booleano, verdadero o falso (True o False respectivamente) cad_de_caract = 'cadena de caracteres' # Una cadena de caracteres (string), una palabra o frase entre " " o ' '. complejo= 1 + 1j # Un número complejo (escribimos j, en vez del tradicional i, para la parte imaginaria) print(type(n_entero)) # es del tipo int' print(type(n_con_comma)) # es del tipo 'float' print(type(v_bool)) # es del tipo 'bool' print(type(cad_de_caract)) # es del tipo 'str' print(type(complejo)) # es del tipo 'complex' <class 'int'> <class 'float'> <class 'bool'> <class 'str'> <class 'complex'> El symbolo de igualdad--que utilizamos para realizar asignaciones--no es un operador symetrico. Es decir v1 = v2 no es lo mismo que v2 = v1. v1= 3 v2= 3 v1= 2 v2= 2 Los operadores +=, -=, *=, etc. nos permiten realizar operaciones sobre una variable sin tener que nombrarla dos veces. 4 8 2 3 v1= 3 v2= 150 Tipos de Variable El *tipo* de una variable es importante. Siempre debemos recordar cuales son los tipos de las variables que hemos definido, ya que Python no provee ninguna forma de fijar el tipo de una variable. Python nos provee funciones para cambiar el tipo de una variable. Si queremos cambiar el tipo de la variable v al tipo ftype, utilizamos el siguiente comando v = ftype(v). El resultado dependera del tipo de la variable que queremos transformar, e.g. si convertimos una variable de punto flotatante a un entero v1 = 2 v2 = 3 v1 = v2 # v1 toma el valor de v2 print("v1= ",v1) print("v2= ",v2) v1 = 2 v2 = 3 v2 = v1 # v2 toma el valor de v1 print("v1= ",v1) print("v2= ",v2) v1 = 1 v1 += 3 # Incrementamos sobre v1. Es equivalente a escribir "v1 = v1 + 3" # Este metodo es mas eficiente y facil de escribir. print(v1) v1 *= 2 # También funciona con *= print(v1) # Asignación Multiple. El orden de los parametros es importante! v1, v2 = 2, 3 #EQUIVALENTE: #v1 = 2 #v2 = 3 print (v1,v2) v1 = 150 v2 = 3 # Python nos permite intercambiar los valores de las variables fácilmente # mediante el uso de asignación multiple v1 , v2 = v2 , v1 #EQUIVALENTE: # v3 = v1 # v1 = v2 # v2 = v3 print("v1= ",v1) print("v2= ",v2) utilizando la función int() , solo obtendremos la parte entera de la variable. 5 5.0 0.3 0 (5+0j) Algunos nombre de variables estan protegidos. Es decir, no podemos usarlos como nombres de variables y asginarles un valor. Por Ejemplo: Cell In[24], line 1 True = 3 # True es un nombre protegido, por lo cual se generara un error. ^ SyntaxError: cannot assign to True Sólo algunos nombres (o palabras) están protegidos en Python, debemos tener cuidado. Las "reglas basicas" para nombrar variables para nombrar variables, son dependientes del lenguaje y del estilo de programación. Aquí mencionamos algunas reglas basicas: asegurarse de no repetir nombres. solo usar un caracter para las variable que no son importantes. usar nombres especificos para las variables que son importantes. no usar nombre se variables muy largos. Finalmente, ejecutando el código a continuación, podemos ver la lista de nombres protegidos de Python y la lista de funciones pre- definidas en Python. False - None - True - and - as - assert - async - await - break - class - continue - def - del - elif - else - e xcept - finally - for - from - global - if - import - in - is - lambda - nonlocal - not - or - pass - raise - re turn - try - while - with - yield - ArithmeticError - AssertionError- AttributeError - BaseException - BaseExceptionGroup - BlockingIOError - Broke nPipeError - BufferError - BytesWarning - ChildProcessError - ConnectionAbortedError - ConnectionError - Connect ionRefusedError - ConnectionResetError - DeprecationWarning - EOFError - Ellipsis - EncodingWarning - Environmen tError - Exception - ExceptionGroup - False - FileExistsError - FileNotFoundError - FloatingPointError - FutureW arning - GeneratorExit - IOError - ImportError - ImportWarning - IndentationError - IndexError - InterruptedErro r - IsADirectoryError - KeyError - KeyboardInterrupt - LookupError - MemoryError - ModuleNotFoundError - NameErr or - None - NotADirectoryError - NotImplemented - NotImplementedError - OSError - OverflowError - PendingDepreca tionWarning - PermissionError - ProcessLookupError - RecursionError - ReferenceError - ResourceWarning - Runtime Error - RuntimeWarning - StopAsyncIteration - StopIteration - SyntaxError - SyntaxWarning - SystemError - System Exit - TabError - TimeoutError - True - TypeError - UnboundLocalError - UnicodeDecodeError - UnicodeEncodeError - UnicodeError - UnicodeTranslateError - UnicodeWarning - UserWarning - ValueError - Warning - WindowsError - Ze roDivisionError - __IPYTHON__ - __build_class__ - __debug__ - __doc__ - __import__ - __loader__ - __name__ - __p ackage__ - __spec__ - abs - aiter - all - anext - any - ascii - bin - bool - breakpoint - bytearray - bytes - ca llable - chr - classmethod - compile - complex - copyright - credits - delattr - dict - dir - display - divmod - enumerate - eval - exec - execfile - filter - float - format - frozenset - get_ipython - getattr - globals - has attr - hash - help - hex - id - input - int - isinstance - issubclass - iter - len - license - list - locals - m ap - max - memoryview - min - next - object - oct - open - ord - pow - print - property - range - repr - reverse d - round - runfile - set - setattr - slice - sorted - staticmethod - str - sum - super - tuple - type - vars - zip - Algunas reglas para escribir Sentencias en Python. Todos los lenguajes de programación requieren de un gramatica estricta. En general, cuando comentemos un error, directamente obtendremos un mensaje de error, en muy pocos casos, el programa continuara y generalmente generando "peores" errores. Debemos recordar que la gramatica de Python forzada para mejorar la legibilidad del codigo fuente. En Python la ejecución de un archivo .py ejecutara cada linea del archivo, una luego de la otra. print(n_entero) # n_entero = 5 print(float(n_entero)) print(n_con_comma) # n_con_comma = 0.3 print(int(n_con_comma)) print(complex(n_entero)) True = 3 # True es un nombre protegido, por lo cual se generara un error. import keyword for x in keyword.kwlist: print(x,end=" - ")#Esta es la lista de nombres (o palabras) protegidas. print() print() import builtins for x in dir(builtins): #Funciones provistas por Python (built-in functions). print (x, end= " - ") Regla 1. Como ya hemos visto, para terminar una linea de instrucciones (comandos) debemos pasar a la linea siguiente, i.e. Python utiliza el salto de linea (otros lenguajes terminan los comandos utilizando symbolos como ';', ':', ':', etc...) El salto de linea tiene un significado especial en Python. Por ello, es imposible escribir dos comandos en la misma linea. Cell In[26], line 1 a=3 b=2 #Error ^ SyntaxError: invalid syntax En el siguiente ejemplo, escribimos una linea de codigo correcta. Sin embargo, es muy larga y dificulta la correcta lectura del programa. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ma gna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo con sequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. E xcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. La solución inmediata seria pasar a la siguiente linea. Pero como los saltos de linea tienen un significado estructural, el interprete entiende la primer linea de comandos como incompleta generando un error. Cell In[29], line 1 print('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ^ SyntaxError: unterminated string literal (detected at line 1) Regla 2. La forma que nos provee Python para lidear con esto, es omitir el salto de linea añadiendo la barra '' antes del salto de linea. Debemos tener en cuenta, que al utilizar la barra, todo lo que este despues de ella no será considerado (como si estuviera comentado, ver siguiente). Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et doloremag na aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo cons equat. Duis aute irure dolor in reprehenderitin voluptate velit esse cillum dolore eu fugiat nulla pariatur. Exc epteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum. Regla 3. Para añadir comentarios en el codigo fuente (mejora la legibilidad del programa) utilizamos el symbolo numeral '#'. Neutraliza todo lo que este escrito hasta el salto de linea. Python no provee ninguna facilidad para escribir comentarios largos, debemos escribir el symbolo numeral en cada linea donde se extiende el comentario. Una buena practica para mejorar la legibilidad de los comentarios largos, es no escribir codigo referido al comentario durante la extensión del mismo. Regla 4. Python es un lenguaje de programación indentado. Esto significa que todas las lineas con comandos comienzan en el mismo lugar tienen el mismo 'status' dentro de la lógica del programa. En otras palabras, todos los espacios al comienzo de una linea tienen un significado (excepto cuando usamos comentarios '#' ). 5 a=3 b=2 #Error a=3 b=2 a,b = 3,2 print('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' print('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.') print('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\ quis nostrud exercitation ullamco \ laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit\ in voluptate velit esse cillum dolore eu fugiat nulla pariatur. \ Excepteur sint occaecat cupidatat non proident,\ sunt in culpa qui officia deserunt mollit anim id est laborum.') a=1 # Asignamos 1 a la variable a a=1 # Re-asignamos el valor de a, podriamos # seguir escribiendo la finalidad de # esta re-asignación, o continuar # ecribiendo sobre la instrucción a=1. a=1 # Nuevo Comentario. 2+3 # Funciona sin problemas 3+2 # Funciona sin problemas 5 Cell In[34], line 2 3+2 # Aquí la primera y segunda linea deben ^ IndentationError: unexpected indent Decisión - Condición Para utilizar las instrucciones condicionales, debemos usar los dos puntos ':'. La diferentes palabras reservadas de la instrucción condicional son: if, elif y else. Problem Problemn positivo Cell In[38], line 3 else: #"if", "elif", y "else" deben tener la misma indentación. ^ SyntaxError: invalid syntax 2+3 3+2 # Aquí la primera y segunda linea deben # tener la misma indentación, porque no hay cambio # en el flujo del programa como: # ciclos, condicionales, definiciones, etc ... if 0 == 0: print('Problem') else: print('No Problem') # Version de una linea. print('Problem') if 0 == 0 else print('No Problem') #Ejemplo: n = int(input("ingrese un numero: ")) if n > 0: # Si 0 == 1, entonces: print('n positivo')# No olvidarse de la indentación 0 == 1 Verdadero # En algunos IDE la indentación es automatica. elif n == 0 : print("n es cero") else: print('n negativo') # 0 == 1 Falso if 0==1: print('Problem') else: #"if", "elif", y "else" deben tener la misma indentación. print('No Problem') if 0==1: print('Problem') else: # Error de Indentacion print('No Problem') # Un ejemplo de como usar multiples instrucciones if. n = int(input("Ingrese un número : ")) # Ingresamos el número n if n%7==0: # El mismo nivel de indentación para el "if", "elif", y "else". print(n, "el residuo es 0 modulo 7") elif n%7==1: print(n, "el residuo es 1 modulo 7") elif n%7==2: print(n, "el residuo es 2 modulo 7") elif n%7==3: print(n, "el residuo es 3 modulo 7") elif n%7==4: print(n, "el residuo es 4 modulo 7") elif n%7==5: print(n, "el residuo es 5 modulo 7") else: print(n, "el residuo es 6 modulo 7") # Manera más corta de obtener el mismo resultado. n=int(input("Ingrese un número : ")) print(n," is congruent to ",n%7,"modulo 7") 7 el residuo es 0 modulo 7 14 is congruent to 0 modulo 7 No es primo, 24 es divisible por 2. No es primo, 12 es divisible por 2. es divisible por 3. Ejercicio: # Ejemplo de instrucciones condicionales anidadas. n = int(input("Ingresar un número entre 8 y 49 para testear si es un número primo : ")) isprime=True if n<7 and n > 49: print("Impossible! el número no esta entre 8 y 49.") #elif n>49: # print("Impossible! el número es demaciado grande.") else: if 2*(n//2) == n: # n = 15 ; n//2 = 7 ; 7 * 2 = 14 print("No es primo, ", n," es divisible por 2.") # Tenemos tres niveles de indentación. isprime=False elif 3*(n//3)==n: print("Not es primo, ", n," es divisible por 3.") isprime=False elif 5*(n//5)==n: print("Not es primo, ", n," es divisible por 5.") isprime=False elif 7*(n//7)==n: print("Not es primo, ",n," es divisible por 7.") isprime=False else: print(n," es primo.") n = int(input("Ingresar un número entre 8 y 49 para testear si es un número primo : ")) isprime=True if n<7 : print("Impossible! el número es muy pequeño.") elif n>49: print("Impossible! el número es demaciado grande.") else: if 2*(n//2) == n: # n = 15 ; n//2 = 7 ; 7 * 2 = 14 print("No es primo, ", n," es divisible por 2.") # Tenemos tres niveles de indentación. isprime=False elif 3*(n//3)==n: print("Not es primo, ", n," es divisible por 3.") isprime=False elif 5*(n//5)==n: print("Not es primo, ", n," es divisible por 5.") isprime=False elif 7*(n//7)==n: print("Not es primo, ",n," es divisible por 7.") isprime=False else: print(n," es primo.") n = int(input("Ingresar un número natural entre 8 y 49: ")) defect = 0 if n<7 : print("Impossible! el número no esta entre 8 y 49.") elif n>49: print("Impossible! el número es demaciado grande.") else: if 2*(n//2) == n: print( "es divisible por 2.") # Tenemos tres niveles de indentación. defect += 2 elif 3*(n//3)==n: print(" es divisible por 3.") defect += 3 elif 5*(n//5)==n: print(" es divisible por 5.") defect += 5 elif 7*(n//7)==n: print("es divisible por 7.") defect += 7 else: print(" es defectivo?? ", n > defect ) Se necesita realizar un programa para asistir a un empleado de un Cine (o Teatro). El empleado esta encargado de enviar a las personas a la sala correcta. Una vez comprada la entrada la audiencia se dirige al empleado, el cual, en base al número que figura en la entrada (3 dígitos) los envía a la sala correspondiente. Si la entrada es par, el empleado los dirige a la Sala 1. Cuando la entrada es impar los dirige a la sala 2. Recientemente, por un error en la impresión de las entradas han salido muchas con el número 000 , en este caso el empleado debe comunicarle al usuario que se dirija a la administraci'on para obtener una nueva entrada. Solución: Sala 1 Uso de ciclos while. Un bucle while se representa de la siguiete manera: 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - Al igual que para el condicional, debemos terminar la linea con la instrucción while con ' : ', luego debemos indentar el bloque de comandos que será repetido en el ciclo. En general, cuando definimos un ciclo while, debemos asegurarnos que el ciclo termine en algún momento. En caso de omitir una terminación segura del ciclo, el programa nunca ejecutara los comandos que esten a continuación del ciclo, para retomar el control, deberemos reiniciar el kernel. Ciclos "for" Cuando debemos realizar una tarea repetitiva, es muy conveniente utilizar los ciclos for. La forma estandard de escribirlos es la siguiente: for variable in 'contenedor' : seguido de un salto de linea y luego las instrucciones a ser repetidas. Como cualquier instrucción con : , necesitaremos indentar. variable es cualquier nombre de variable (no protegido), y 'contenedor' es un objeto contenedor. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Debemoms tener cuidado que range no nos retorna un tipo de datos conveninete. Igualmente puede ser (o será) convertido al tipo lista. Si utilizaramoms el tipo lista directamente, la performance se vera reducida. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 n = int(input("Ingresar el número de su entrada: ")) if n < 0 or n>999 : print("Entrada no valida.") else: if n == 0 : print("Por favor consiga otro ticket.") elif 2*(n//2) == n: print( "Sala 1") # Tenemos tres niveles de indentación. else: print("Sala 2") N=int(input("Contaremos hasta : ")) p=0 while p < N: # Definimos la condición sobre la que ejecutara el ciclo. p+=1 # Hacemos algo dentro del ciclo. print(p,end=" - ") # Hacemos otra cosa. # Ejemplo de un ciclo for x in range(0,20): print(x,end=" ") # Comparación con los ciclos "mientras" x=0 while x<20: print(x,end=" ") x+=1 # Uso de ciclos for, para distintos tipos de contenedores. for x in {0,1,2}: # Conjunto 0 1 2 A l g o r i t m o s E s t r u c t u r a s D a t o s A l g o r i t m o s E s t r u c t u r a s D a t o s Algunas veces, cuando recorremos una lista L utilizando un ciclo for nos gustaría poder ver los valores y los indices. L[0]=1 L[1]=5 L[2]=2 L[3]=caballo L[4]=3 También podemos utilizar la siguiente notación reducida for index,variable in L: En este caso, tendremos L[index]=variable durante la ejecición del ciclo. L[0]=1 L[1]=5 L[2]=2 L[3]=caballo L[4]=3 Podemos interrumpir el ciclo for (respectivametne para while) utilizando el commando break. 0 1 2 3 4 5 6 0 1 2 3 4 5 6 10 11 12 13 14 15 16 20 21 22 23 24 25 26 30 31 32 33 34 35 36 40 41 42 43 44 45 46 50 51 52 53 54 55 56 60 61 62 63 64 65 66 70 71 72 73 74 75 76 80 81 82 83 84 85 86 Algunas funciones útiles de Python - print, input, help. En Python, una función es invocada de la siguiente forma function (variable_1, ..., variable_r) Ya hemos visto angunas funciones como print, type, int, …. En la salida del programa anterior, puede verse una lista de las funciones provistas por Python (built-in functions). Luego, comenzaremos a definir nuestras propias funciones. Por el momento veremos algunosejemplos útiles. La función print La función print puede aceptar muchos argumentos de entrada. Los argumentos, ya sean valores o nombres de variables, se imprimiran en el mismo orden indicado, separados por un espacio. Por defecto la función print agrega un salto de linea al finalalizar la impresion de los datos. 3 dies irae True print(x,end=' ') print('') for x in 'AlgoritmosEstructurasDatos': # Strings print(x,end=' ') print('') for x in list('AlgoritmosEstructurasDatos'): # Listas print(x,end=' ') # Un modo sencillo de hacerlo. L=['1','5','2','caballo','3'] for index in range(0,len(L)): print("L[{}]={}".format(index,L[index])) for index,variable in enumerate(L): # Usamos la funcion enumarate para acceder a las tuplas (i,L[i]) print("L[{}]={}".format(index,variable)) for x in range(0,9): if x>6: break print(x,end=" ") for y in range(0,9): for x in range(0,9): if x>6: break # Solo interrumpimos el ciclo en "donde estamos". print(10*y+x,end=" ") print(3) # Imprime el número (entero) 3. print('dies irae') # Imprime el string dies irae print(True) # Imprime True 2 3 -- dies irae -- True* Help on built-in function print in module builtins: print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream. Para cambiar el 'terminador' del commando print--que por defecto es "\n" (barra n)--debemos añadir el argumento: end="terminador". 3*dies irae*True 3 dies irae True La función input La función input toma como argumento una cadena de caracteres. Luego, la consola del systema, escribe la cadena de caracteres y queda en espera a que el usuario introduzca algo con el teclado, lo cual sera el resultado devuelto por la funcion input. El tipo del resultado es siempre una cadena de caracteres!! Por favor ingrese un número : 10 10 <class 'str'> 11 La Función help La función help toma cualquier función predefinida en el lenguaje Python como argumento y nos muestra su codigo. Recursos Descargas Python : https://www.python.org Atom : https://atom.io (editor) Anaconda : https://www.anaconda.com/download/ GNU Emacs : https://www.gnu.org/software/emacs/ (editor) Bibliografía. x = 2 print(x) # Imprime el valor de la variable y no el nombre. print(3,'dies irae',True,sep=' -- ', end=" * ") # podemos imprimir diferentes argumentos # en la misma linea help(print) print(3,end="*") # Cambia el salto de linea por un * . print('dies irae',end="*") # Cambia el salto de linea por un * . print(True) # Imprime un salto de linea. print(3) # Cambia el salto de linea por un espacio. print('dies irae',end=" ") # Cambia el salto de linea por un espacio. print(True) # Imprime un salto de linea. n = input("Por favor ingrese un número : ") print(n) print(type(n)) # El tipo de la variable n es 'srt' y no 'int'. print(int(n) + 1) # Aquí vemos que pasa cuando mezclamos distintos tipos de datos (algunos serán compatibles). help(print) help(input) help(help) https://www.python.org/ https://atom.io/ https://www.anaconda.com/download/ https://www.gnu.org/software/emacs/ [Joyanes, 2003] Joyanes Aguilar, L. (2003). Fundamentos de Programación; Algoritmos, Estructuras de Datos y Objetos (3a. ed.). Madrid: McGraw-Hill Interamericana. [Aho et al., 1998] Aho, A. V., Hopcroft, J. E., & Ullman, J. D. (1998). Estructuras de datos y algoritmos. [Drozdek, 2007] Drozdek, A. (2007). Estructura de Datos Y Algoritmos en Java. Cengage Learning Latin America. [Brassard et al., 2008] Brassard, G., & Bratley, P. (2008). Fundamentos de algoritmia. Madrid: Pearson Prentice Hall. [Heilman, 2010] Heileman,Gregory, L. (2010). Estructura de datos, algoritmos y programación orientada a objetos. La Habana: Editorial Félix Varela. [Weiss, 2010] Weiss, M. A. (2010). Data structures & problem solving using Java. Boston: Pearson Education. [Goodrich et al., 2018] Goodrich, M. T., Tamassia, R., & Goldwasser, M. H. (2018). Data structures and algorithms in Python. [Lee et al., 2015] Lee, K. D., & Hubbard, S. (2015). Data Structures and Algorithms with Python. Cham: Springer International Publishing. [Cormen et al., 2017] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2017). Introduction to algorithms. [Gamma et al., 1995] Gamma, E., Helm, R., Johnson, R. E., & Vlissides, J. (1995). Design patterns: Elements of reusable object- oriented software. Reading, Mass: Addison-Wesley. (La mayoria de los libros mencionados en ingles, tienen al menos una edición en español)
Compartir