sábado, 13 de octubre de 2018

Manejo de archivos planos en Python 3.7

Para el manejo de archivos planos en Python 3 lo haremos con las siguientes palabras reservadas:
En primer lugar se debe hacer referencia al módulo estandard de Python IO y al evento open
Eso lo podemos hacer de la siguiente manera con:
from io import open
open: asigna un archivo externo a una variable interna, así podremos manejar al archivo desde un programa, lleva dos argumentos de la siguiente forma:
variable=open(“nombre_archivo.extensión”, modo)
modo: hace referencia al manejo que daremos al archivo como lectura, escritura o lectura/escritura,
    1. “w” = escritura (este argumento crea un archivo desde 0 o sobre escribe uno existente)
        a) utilizamos el método “write(cadena)” para escribir una cadena
        b) utilizando el método “writelines(lista)” para agregar a una lista
    2. “a”    = escritura (este argumento crea un archivo si no existe y agrega si existe)
        a) utilizamos el método “write(cadena)” para escribir una cadena
        b) utilizando el método “writelines(lista)” para agregar una linea
    3. “r” = lectura (abrimos el archivo en modo de lectura)
        a) utilizando el método read(bytes) para leer el archivo
        b) utilizando el método readline() lee la linea actual del archivo y lo cargar en una variable
        c) utilizando el método readlines() se carga el contenido del archivo en una lista
    4. “r+” = lectura escritura (se combinan ambas operaciones), esta opció0n no genera archivo nuevo pero puede sobre escribir de acuerdo a la posición del puntero
Existen algunas funciones más que pueden ayudar en el manejo de archivos
    A) archivo.seek(a, n byte) a= posición de inicio, n byte = caracteres = posición donde situar el puntero
    B) archivo.read(a, n byte) a= posición de inicio, n byte = caracteres = posición hasta la cual se leerá el contenido del archivo
    C) archivo.tell() posición en bytes (caracteres) actual del puntero
=======================================================================
from io import open
from os import system
import datetime
system("clear")
def cabeza():
    k1 = """
 ╔══════════════════════════════════════╗
 ║       Manejo de Archivos 8         ║
 ╠═════════════╦════════════════════════╣
 ║ Autor:      ║ ROHC                   ║
 ║ Lenguaje:   ║ Python 3               ║
 ║ Ejercicio:  ║ Manejo Archivo         ║
 ║ Usando:     ║ 'r+' y 'readline()'    ║"""
    k2 = " ║ Fecha:      ║ "+str(datetime.date.today())+"             ║"
    k3 = " ╚═════════════╩════════════════════════╝"
    print (f"{k1}")
    print (f"{k2}")
    print (f"{k3}")
#============================================
cabeza()
print ("El argumento 'r+', pone al archivo en modo de lectura")
k4 = open("dato3.rohc","r+")
print("El método 'readline()' carga el contenido de un archivo en una lista")
k5 = k4.readlines()
print ("Cantidad de elementos de la lista; ",len(k5))
for i in range (len(k5)):
    k4.seek(0)
    if i == 2:
        k6= input ("Ingresar valor: ")
        k5.insert(i,k6+"\n")
k4.writelines(k5)
print ("=====================================")
print ("Posición del puntero: ",k4.tell())
k4.close()
k4=open("dato3.rohc","r")
print (k4.readlines())
k4.seek(0)
print ("Lectura hasta el cadacter 40:")
print (k4.read(30))
k4.close()

domingo, 2 de septiembre de 2018

Errores y excepciones


En Python se pueden observar 2 tipos de errores , los sintácticos y las excepciones.
Comencemos por los errores de sintaxis, llamados también errores de interpretación
>>> a=10
>>> if a print (a)
File "<stdin>", line 1
if a print (a)
^
SyntaxError: invalid syntax
>>>
El interprete Python apunta con un a flecha a donde detecta el error
Por otra parte las excepciones son errores detectados durante el tiempo de ejecución:
>>> a/(1/0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>> b=b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>> b = "b"
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
Puede verse en la última línea el tipo de excepción y lo que sucedió.
Estas son tipos de excepciones estándares predefinidas ZeroDivisionError ; NameError ; TypeError, son identificadores incorporados al intérprete (no son palabras clave reservadas).
Por ejemplo una interrupción generada por el usuario se muestra con la excepción KeyboardInterrupt

Manejo de excepciones

Los errores de ejecución son llamados excepciones. Si durante la ejecución de un programa, surge una excepción (error) y este no es manejada, la excepción se propaga hacia el bloque que la invocó, si éste tampoco la maneja, la excepción continua propagándose hasta llegar a la parte importante del programa y si ésta tampoco la maneja se interrumpe la ejecución del programa.
Para el manejo de excepciones Python utiliza la sentencia try, except y finally
try: En este bloque se ubica todo el código que pueda generar una excepción
except: viene luego del bloque try y se encarga que capturar las excepciones y da la oportunidad de procesarlas adecuadamente
Veamos el siguiente ejemplo:
>>> valor= int(input("Ingrese un valor entero: "))
Ingrese un valor entero: "hola"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '"hola"'
>>>
Al no ingresar el entero esperado y escribir la palabra “hola” vemos que aparece la excepción “ValueError”
Ahora veamos como tratar la excepción con la sentencia try
>>> valor = "Esto debe ser un entero"
>>> while True:
... try:
... valor= int(input("Ingrese un valor entero: "))
... break
... except:
... print ("Error. Ingrese un valor entero")
...
Ingrese un valor entero: "hola"
Error. Ingrese un valor entero
Ingrese un valor entero: hola
Error. Ingrese un valor entero
Ingrese un valor entero: "un valor entero"
Error. Ingrese un valor entero
Ingrese un valor entero: un valor entero
Error. Ingrese un valor entero
Ingrese un valor entero: 20
>>>
Puede observarse que dado el “no ingreso de un entero” el código marca el error con
“Error. Ingrese un valor entero”
Hasta que es ingresado el número 20 que cumple con la condición
………………………………………………………….......................................
Dentro de un bloque try pueden ocurrirse distintos tipos de excepciones por lo que es posible utilizar varias sentencias except una para cada error, esto se hace especificando los nombres de las excepciones a continuación de except , entre paréntesis, separadas por comas y dos puntos al final:
except (RuntimeError, TypeError, NameError):
También luego de un bloque try es posible colocar varios bloques except y se ejecuta solo uno de ellos
La sentencia try podríamos interpretarla de la siguiente forma:
try:
Si se produce tal error
except:
haga tal cosa
Al final puede ubicarse la sentencia finally, para escribir sentencias de finalización que suelen ser de limpieza, la particularidad de este bloque es que se ejecuta siempre, haya excepción o no, aunque no es necesario que finally este presente

Como es que actúa Python

Al encontrarse con estos bloques. Python comienza a ejecutar las instrucciones que se encuentran dentro de un bloque try normalmente. Si durante la ejecución de esas instrucciones se levanta una excepción, Python interrumpe la ejecución en el punto exacto en que surgió la excepción y pasa a la ejecución del bloque except correspondiente y al terminar de ejecutar el bloque correspondiente, se pasa a la ejecución del bloque finally, si se encuentra definido

domingo, 26 de agosto de 2018

Listas

Secuencia

Es un tipo de objeto que puede indexarse y almacenar datos, en este grupo se encuentras 3 tipos de datos: “cadenas” “listas” y “tuplas”
Las listas, tuplas, diccionarios y conjuntos (set) son estructuras que permiten trabajar con colecciones de datos.
Tomando en cuenta que los elementos de cada estructura puede numerarse, el primer elemento ocupa la posición 0.
Cadena
Es una estructura de datos compuesta por caracateres en comillas simples o dobles
>>>cad = “lo que está entre comillas es la cadena”

Listas

Es una estructura de datos que deben ir separados con una coma y todo el conjunto entre corchetes. Se dice que una lista es una estructura mutable porque además de permitir el acceso a los elementos, pueden suprimirse o agregarse nuevos.

l_meses = [“enero”, “febrero”, “marzo”, “abril”, “mayo”, “junio”, “julio”, “agosto”, “septiembre”, “octubre”, “noviembre”, “diciembre”] #Declara lista
Puede definirse una lista vacía, a la que con posterioridad se podría agregar elementos, esto se puede hacer de 2 formas:
lista = [] # Declara lista vacía
lista = list() # Declara lista vacía

Tuplas

Una tupla permite agrupar un conjunto inmutable de elementos, es decir, que en la tupla no es posible ni agregar ni quitar elementos.
En una tupla los elementos se escriben separados por comas y opcionalmente, pueden ir entre paréntesis aunque su uso es lo más recomendable por una cuestión de claridad.
>>> t_numeros = (1,2,3)
#Declara tupla
>>> print ((1,2,3))
#Muestra la tupla en pantalla
>>> (1, 2, 3)

>>> print (t_numeros)
#muestra la tupla en pantalla
>>> (1, 2, 3)

>>> print (1, 2, 3)
# muestra numero
>>> 1 2 3

t_dia_se = (“Lu”, “Ma”, “Mi”, “Ju”, “V”, “Sa”, “Do”)
# Declara tupla
Operaciones con cadenas y listas

>>>cad1 = 'esto es una cadena de caracteres'
# declara variable
>>>list1 = ['pera', 'manzana', 'naranja', 'uva']
# declara lista
>>>longitud = len(cad1)
# 32, devuelve longitud de la cadena
>>>cant_elem_lis1 = len(list1)
# 4, devuelve nº elementos de la lista
>>>cuenta = cad1.count('es')
# 3, cuenta apariciones de 'es'
>>>print (cad1.find('es'))
# 0, devuelve posición de búsqueda
>>>cad2 = cad1.join('**')
# inserta “*” al principio y al final de cad1
>>>list1 = cad1.split('una')
# divide cadena por separador → list1
>>>print (list1)

['esto es ', ' cadena de caracteres']

>>>tupla1 = cad1.partition(' ')
# divide cadena por separador → tupla
>>> print (tupla1)

('esto es ', 'una', ' cadena de caracteres')

>>>cad2 = cad1.replace('caracteres','tipos',1)
# busca y sustituye términos
>>>num_pi = 3.14
# asigna número con decimales
>>>cad3 = str(num_pi)
# convierte número a cadena
>>>if cad1.startswith("esto”):
# evalúa si comienza por “esta”
>>>if cad1.endswith("caracteres"):
# evalúa si termina por “llama”
>>>if cad1.find("una") != -1:
# evalúa si contiene “llama”
>>>cad4 = 'Python'
# asigna una cadena a una variable
>>>print(cad4[0:4])
# muestra desde la posición 0 a 4: "Pyth"
>>>print(cad4[1])
# muestra la posición 1: "y"
>>>print(cad4[:3] + '-' + cadena4[3:])
# muestra "Pyt-hon"
>>>print(cad4[:-3])
# muestra todo menos las 3 últimas: "Pyt"

domingo, 12 de agosto de 2018

Diagramación


Diagrama de flujo

Un diagrama de flujo es una representación esquematizada de un programa. Constituyen una forma eficiente para mostrar algoritmos distinta al pseudocódigo, y que nos sirve de forma complementaria en el proceso de creación de la estructura del programa antes de ponernos delante del ordenador, es altamente intuitivo, fácil de leer, claro y preciso.
Una de sus limitaciones es que al ser un dibujo en ocacioens no es tan facil de crear y/o mantenerd a diferencia de un psdedocódigo que es facil de reformar con un procesador.
Gráficamente podemos verlo de la siguiente manera: si tenemos por ejemplo siete páginas de pseudocódigo bastará con numerarlas y ponerlas una detrás de otra.
En cambio, en un diagrama de flujo que ocupen siete páginas podrá adoptar cualquier forma
Para la creación de diagramas de flujo utilizaremos una simbología y normas de construcción determinadas. En nuestro caso, un modelo simplificado de los estándares internacionales, con el objeto de poder interpretar y ser interpretados por otros programadores.
 


Terminal. Indica comienzo o final de un programa, o módulo.


Entrada de datos. Equjivale a la entrada de datos por medio de una sentencia input hacia el ordenador

Proceso de asignación. Cualquier proceso interno realizado por el ordenador como asignación de valor a variables, operaciones matemáticas, etc.


Proceso predefinido: esta figura constituye un módulo o función. Al llegar a esta llamada el programa pasa a ejecutar todas las instrucciones contenidas en la subrutina para una vez terminadas continuar el fluj


Entrada de datos: esta figura sera la utilizada para el ingreso de datos en forma manual


Decisión múltiple. El dato o condición planteada presenta distintas alternativas (casos), siguiendo el programa distinta vía en función del caso.


Conector. Indica a través de una referencia  (número, letra o texto) dónde debe continuar un diagrama de flujo que se interrumpe.


Línea de flujo. Sentido del flujo de procesos. Indica qué proceso viene a continuación del otro.


Conector fuera de página. Se uitiliza para hacer los saltos de página correspondiente


Documento: Este esquema representa el archivo o documento de salida


Ciclo While: este diagrama representa una secuencia de iteraciones que se repiten mientras una condición sea verdadera, y termina cuando esta sea falsa


Ciclo For: compone una serie de iteraciones que se repiten una cantidad determinada de veces

miércoles, 8 de agosto de 2018

Salida por Pantalla 1


Salida por Pantalla

Si queremos mostrar algo en pantalla escribimos
Print (“Hola Mundo”)
Cuando hacemos esto Python inserta un saldo de linea (un Enter) al final de la cadena, con la intensión de poden el cursor en la siguiente línea Pero podemos tener control de esta situación, con el siguiente formato 
Print (“cadena”, end = “caracter final”) 
Con esto el siguiente print quedará a continuación de la cadena y no en la linea de abajo 
Ejemplo 
print (“Hoy es un buen día para programar”, end = ” “) 
print (en Python”) 
Guardamos en un archivo y lo probamos con el interprete Python
$ python3 pf1.py 
Hoy es un buen dia para programar en Python 
También podemos ingresar variables y mostrar las variables de la siguiente manera: 
a = “Hoy es un buen día para programar” 
b = “en Python” 
print (a, b) 
Al poner las variables separadas por comas y quedarán separadas por un espacio 
También podemos separar la ejecución del print mediante un carácter de preferencia 
Ejemplo 
print (“Hoy es un buen día para programar”, sep = ” - “) 
print (en Python”) 
al ejecutar el ejemplo veremos las cadenas separadas por el caracter de separación 
$ python3 pf21.py 
Hoy es un buen dia para programar - en Python 
También podemos ingresar variables y mostrar las variables de la siguiente manera: 
a = “Hoy es un buen día para programar” 
b = “en Python” 
print (a, b, sep = " - ") 
Al poner las variables por comas y quedaran separadas por un espacio 
Ejemplo 
print (“Hoy es un buen día para programar”, sep = ” - “) 
print (en Python”)

sábado, 4 de agosto de 2018

Python - Lenguaje de Programación

Los lenguajes de programación son las herramientas del software propicias para crear aplicaciones y programas
Python.- Para 1989 el científico de la programación y holandés Guido Van Rossum escribiíor un intérprete para el nuevo lenguaje de scripting que había estado ideando recientemente: un descendiente de ABC que gustaría a los hackers de Unix/c. Para el mismo elegio el nombre de Python por ser fan de Monty Python's Flying Circus
Este se trata tanto del lenguaje de propósito general de facil aprendizaje adecuado para crear aplicaciones web y programas varios, se caracteriza por poseer cierta simplicidad y versatilidad en cuanto a su uso, así como por ser un lenguaje de programación interpretado, entendiéndose que su código no se debe compilar para la ejecución, lo que genera rapidez al trabajar, además es fácil de utilizar ya que cuenta con gran cantidad de librerías y sintaxis clara.
Por ser de propósito general no está supeditado a un solo tipo específico de programación como seria por ejemplo la programación web
Python 3 se basa en el siguiente principio:
Reducir la duplicación de características eliminando viejas formas de hacer las cosas
(Reduce feature duplication by removing old ways of doing things).
A pesar de esto, se mantiene como un lenguaje de programación multiparadigma. Los programadores todavía tienen opciones entre:
Orientación a objetos
Programación estructurada
Programación funcional y otros paradigmas
El tipado dinámico de Python es otra de las características de este lenguaje, esto permite utilizar variables sin declaración

viernes, 3 de agosto de 2018

Estructuras y tipos


De lenguaje de programación

Python, pertenece al grupo de los lenguajes de programación, puede ser clasificado como un
  • Lenguaje interpretado, (no se compila)
  • De alto nivel, (cercano al usuario)
  • Multiplataforma, (corre en varios ssitemas operativo)
  • De tipado dinámico (Sin declaración de variables)
  • Multiparadigma.(de lógica y estructuras dinamicas que soporta distintas técnicas de programación)
A diferencia de otros lenguajes de programación, Python nos provee de reglas de estilos, a fin de poder escribir código fuente más legible y de manera estandarizada. Estas reglas de estilo, son definidas a través de la Python Enhancement Proposal Nº 8 (PEP 8) , (Propuesta de mejoras de Python) la cual iremos viendo a lo largo del curso.
Glosario de Lenguaje informático: es un idioma artificial, utilizado por ordenadores, cuyo fin es transmitir información de algo a alguien.
Los lenguajes informáticos, pueden clasificarse en:
  1. lenguajes de programación (Python, PHP, Pearl, C, etc.);
  2. lenguajes de especificación (UML);
  3. lenguajes de consulta (SQL);
  4. lenguajes de marcas (HTML, XML);
  5. lenguajes de transformación (XSLT);
  6. protocolos de comunicaciones (HTTP, FTP); entre otros.
Lenguaje de programación: es un lenguaje informático, diseñado para expresar órdenes e instrucciones precisas, que deben ser llevadas a cabo por una computadora. El mismo puede utilizarse para crear programas que controlen el comportamiento físico o lógico de un ordenador. Está compuesto por una serie de símbolos, reglas sintácticas y semánticas que definen la estructura del lenguaje.
Lenguajes de Alto Nivel: son aquellos cuya característica principal, consiste en una estructura sintáctica y semántica legible, acorde a las capacidades cognitivas humanas. Son independientes de la arquitectura del hardware, motivo por el cual, asumen una gran portabilidad.
Lenguajes de Bajo Nivel: Su estructura sintáctica es cercana al lenguaje propio de cada computadora. Estos lenguajes son utilizados para la programación de micro operaciones y a nivel circuital. Si bien existen una variada cantidad de estos los mas comocidos reciben el nombre de Assembler. (Lenguaje ensamblador)
Lenguajes interpretados: Son programas que requieren de un interprete para ser ejecutados. Un intérprete, actúa como un traductor que interpreta las sentencias del programa y las traduce a lenguaje de máquina y así ejecutar el código del programa.
Ejemplo de lenguajes de programación interpretado son Python, PHP, Ruby, Lisp, entre otros.
Tipado dinámico: un lenguaje de tipado dinámico es aquel cuyas variables, no requieren ser definidas asignando su tipo de datos, sino que éste, se auto-asigna en tiempo de ejecución, según el valor declarado.
Multiplataforma: significa que puede ser interpretado en diversos Sistemas Operativos como GNU/Linux, Windows, Mac OS, Solaris, entre otros.
Multiparadigma: acepta diferentes paradigmas (técnicas) de programación, tales como la orientación a objetos, aspectos, la programación imperativa y funcional.
Código fuente: es un conjunto de instrucciones y órdenes lógicas, compuestos de algoritmos que se encuentran escritos en un determinado lenguaje de programación, las cuales deben ser interpretadas o compiladas, para permitir la ejecución del programa informático.



Programación para todos

En el año 1999 Van Rossum realizó una propuesta a DARPA llamada Computer Programming for Everybody, en la que describió qué y cómo debería ser Python:
  • Python debería ser fácil, intuitivo y tan potente como sus principales competidores.
  • El proyecto sería de Código Abierto para que cualquiera pudiera colaborar.
  • El código escrito en Python sería tan comprensible como cualquier texto en inglés.
  • Python debería ser apto para las actividades diarias permitiendo la construcción de prototipos en poco tiempo.
Python es al día de hoy uno de los lenguajes de programación más populares. En 2011 se proclamó el tercer lenguaje más popular de la forja GitHub y según la encuesta7​ se encuentra entre los 10 lenguajes de programación más demandados en las ofertas de trabajo.