Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Los tipos son asignados automáticamente. Se pueden reasignar con las funciones int,
float, str. Bool nos permite evaluar cualquier tipo en términos lógicos. Para conocer el
tipo de una variable, función type().
Operadores
+.-,*,/ (ojo con la división entera) (ejemplo en ejercicio_2_cap_1.py)
**
Cuidado con las prioridades en las formulas. Ante la duda, ()
Para imprimir usar un string en el que se sustituye la variable por % con este significado:
Formato Significado
%s string
%d integer
%f float con seis decimales
%e ,%E notation cinentifica con exponente e,E
%g ,%G notation cinentifica compacta con exponente e,E
%.yz tipo z con y decimales
%x.yz tipo z con y decimals en un total de números x
%% Representa el signo % en si mismo
Formato:
Ejercicio 1
Ejercicio_1_cap_1.py
fx = 1/sqrt(2*pi*varianza)*exp(-((x-media)/varianza)**2/2) # Formula
Todo lo que viene a continuación de ‘:’ y está situado con una sangría exacta de 4 espacios,
se considera incluido en el bloque. Un posicionamiento a una sangría anterior indica el fin
del bloque
Se define en un bloque
== igual que A += 1, A -= 1; A *= 2; A /= 2
!= distinto de A = A + 1; A = A – 1; A = 2 * A; A = A / 2
> mayor que
>= mayor o igual que Las sentencias pueden estar en la misma
< menor que linea separadas por ;
<= menor o igual que
Y los operadores
AND OR NOT y ( )
Primera parte – Tema 1
6
Curso de Python aplicado a Minería
Bucles y Listas
ejercicio_2_cap_2.py
Acceso
nl[1][2] = 2
nl[-1][2] = 5
Tuplas
Range
ejercicio_5_cap_2.py
for i in C:
F = (9.0/5) * i + 32 # Se verifica lo anterior con la ampliación
print 'Celsius = %d Farenhein = %5.1f' % (i,F)
n=21
C_min = -10
C_max = 40 # Asignamos los grados Celsius máximos y mínimos
dC = (C_max-C_min)/float(n-1) # Calculamos el paso
Celsius = [0]*n # Creamos una lista con n=21 ceros y longitud
print len(Celsius) # obviamente 21
for i in range(len(Celsius)): # Utilizamos un bucle for para cargar la lista Celsius con
Celsius[i] = C_min + i * dC # temperaturas desde C_min a C_max con paso dC
Farenhein = [0]*n
for i in range(len(Celsius)): # Carga de lista Farenhein mediante conversion
Farenhein[i] = (9.0/5) * Celsius[i] + 32 # desde Celsius
Funciones
Se utiliza para independizar acciones del flujo principal del programa
La invocación es:
s1, .., sn = <nombre> (e1, …, em)
ejercicio_1_cap_3.py
for f in range(0,200,15):
print 'Celsius %5.1f Farenhein %5.1f' % (Farenhein_to_Celsius (f),f)
ejercicio_2_cap_3.py
def funcion(n):
sum = n + 1
print 'en funcion ',sum #sum es una variable local
return sum
Utilizando la sentencia global es posible manipular una variable global dentro de una
función. Sino no es posible.
ejercicio_3_cap_3.py
a = 20; b = -2.5 # inicio de variables
if condition1 es cierta:
<4s><bloque de sentencias 1>
elif condition2 es cierta:
<4s><bloque de sentencias 2>
elif condition3 es cierta:
<4s><bloque de sentencias 4>
else :
<4s><bloque de sentencias 3>
<next statement>
Flujos encadenados
Ejemplo de Control de Flujo simple
from math import pi,sin
ejercicio_6_cap_3.p def f(x):
from math import pi,sin if x < 0:
return 0.0 # Define una función
def f(x): elif 0 <= x < 1: # a tramos
if 0 <= x <= pi: return x
valor = sin(x) # Solo calcula sin(x) elif 1 <= x < 2:
else: # si x está entro 0 y pi return 2-x
valor = 0 # si no es así = 0 elif x >= 2 :
return valor return 0.0
ejercicio_8_cap_3.py
ejercicio_1_cap_4.py
La función eval(<expresión> ) devuelve la evaluación de una expresión matemática con su
tipo más conveniente. Muy útil para filtrar la entrada de datos.
eval (‘sqrt(2)’) devuelve 1.41421 float
eval(‘*1,2,4,5’+) devuelve [1,2,3,4,5] list
ejercicio_1_cap_4.py
Un fichero ha de ser abierto y cerrado. El final del fichero está delimitado por un
carácter especial (EOF).
fichero1 = open(camino,'r')
media = sum([float(linea) for lineas in fichero1.readlines()])/len(lineas)
print ' Media %f' % media
fichero1.close()
Primera parte – Tema 1
29
Curso de Python aplicado a Minería
Manejo de Ficheros
Leer desde un fichero de texto con datos y literales ejercicio_4_cap_4.py
def extraer_datos(nombre_fichero):
fichero1= open(nombre_fichero,'r')
fichero1.readline() # Linea no util
mes = [];lluvia = [] # iniciar listas
for linea in fichero1:
palabras = linea.split() #Función que convierte un string
# en una lista de strings separados por blancos
# o tabuladores
mes.append(palabras[0]);lluvia.append(palabras[1])
# asignamos a las listas mes y lluvia los elementos de la lista de linea de
# lectura 0 y 1
fichero1.close()
mes = mes[:-1]; lluvia = lluvia[:-1];lluvia_anual = lluvia[-1] # -1 ultimo termino
return mes,lluvia,lluvia_anual # Devuelve tres listas
nombre_fichero = ‘ejercicio_4_4.txt'
meses, valores, media = extraer_datos(nombre_fichero)
for meses, valores in zip(meses,valores): # Crea una lista compuesta de dos (tabla)
print meses,valores
print 'Media Anual',media
Primera parte – Tema 1
30
Curso de Python aplicado a Minería
Manejo de Ficheros
Escritura de Datos
La sentencia es de
camino = "<mi_path>"
nombre_fichero_salida = camino + "sondeos_tema_1_puntos.csv"
nombre_fichero_entrada = camino + "sondeos_tema_1.txt«
- Sin embargo existen librerías específicas que pueden ser usadas para utilizar
matrices en el sentido matemático (listas rectangulares con los mismos tipos de
datos).
Optimizan el cálculo.
La librería es numpy y se puede descarga fuera del entorno QGIS. Por ejemplo en
Anaconda (entorno Spider)
Diccionario[indice1] es Objeto1
Operadores de Diccionarios