Beruflich Dokumente
Kultur Dokumente
arearect.py
# The program calculates area of rectangle
l=8
b=5
a=l*b
print ("Area of rectangle is ", a)
seleccione Ejecutar> Mdulo Ejecutar en el men o simplemente presione F5. Usted recibir el
siguiente resultado:
Area of rectangle is 40
10
# Integer literal
10.50
# Floating-point literal
10.50j
# Imaginary literal
'Hello'
# String literal
"World!"
# String literal
'''Hello World!
It might rain today
# Triple-quoted string literal
Tomorrow is Sunday'''
En Python, puede usar tanto comillas simples y dobles para representar cadenas.
Las cadenas que se ejecutan a travs de mltiples lneas estn representados por
comillas triples.
Variables
Las variables se utilizan para almacenar datos en un programa. Para definir una
variable, se elige un nombre para la variable y, a continuacin, utiliza el signo
igual seguido de los datos que almacena. Las variables pueden ser letras,
nmeros o palabras. Por ejemplo,
l = 10
length = 10
length_rectangle = 10.0
k="Hello World!"
Se puede ver en los ejemplos anteriores la variable puede ser un solo carcter o
una palabra o palabras unidas por guiones bajos. En funcin de los datos
almacenados en una variable, que se ha denominado como nmero entero, punto
flotante, cadena, booleano, y la lista o tuplas. Al igual que en los ejemplos
anteriores, las variables l y la duracin son variables enteras, length_rectangle es
una variable de punto flotante, y k es una variable de cadena. Los siguientes son
ejemplos de boolean, lista, y las variables de tupla:
a=True # Boolean variable
b=[2,9,4] # List variable
c=('apple', 'mango', 'banana') # tuple variable
A tuple in python language refers to an ordered, immutable (non
changeable) set of
values of any data type.
Comments
# This program computes area of rectangle
a=b+c # values of b and c are added and stored in a
Printing
Para los mensajes de impresin y los resultados de los clculos, la funcin print
() se utiliza con la siguiente sintaxis,
print(["message"][variable list])
donde el message es la cadena de texto encerrada entre comillas simples o
dobles. La lista de variables puede ser una o ms variables que contienen el
resultado de clculo, como se muestra en estos ejemplos:
print
print
print
print
("Hello World!")
(10)
(l)
("Length is ",l)
Con el fin de obtener un espacio entre las cadenas, hay que concatenar un
espacio en blanco entre las cadenas:
Division Operator
Note
Cuando ambos operandos son enteros, el operador / se comporta
como //
El siguiente programa utiliza el verdadero operador de divisin para
calcular el rea de un tringulo.
areatriangle.py
b=17
h=13
a=1.0/2.0*b*h
print ("Area of triangle is", a)
print ("Base= %d, Height is %d, Area of triangle is %f" %(b,h,a))
Output:
Area of triangle is 110.5
Base= 17, Height is 13, Area of triangle is 110.500000
average1.py
p=q=r=10
a=1.0/3.0*(p+q+r)
print ("Average of three variables is", a)
print ("Average of three variables is %.2f" %a)
print ("Average of three variables is %d" %a)
Output:
Average of three variables is 10.0
average2.py
from __future__ import division
p=q=r=10
a=(p+q+r)/3
print ("Average of three variables is", a)
Output:
Average of three variables is 10.0
Exponentiation
Para aplicar la exponenciacin, utilice dos asteriscos: **. Por
ejemplo, a ** b signifca ab .
Usted recibe una excepcin si a es menor que cero y b es un valor de
punto flotante con una parte fraccional no nulo.Tambin puede
utilizar la funcin incorporada pow() para aplicar exponenciacin.
Por ejemplo, pow(a, b) es el mismo que a**b.
Usted aprender acerca de la gestin de excepciones en el Captulo
6, "Administracin de archivos."
Vamos a escribir un programa para calcular el volumen de una esfera.
La frmula es 4/3 * pi * r3, donde se sabe que el valor de radio r
debe ser 3.
volsphere.py
Examples
p,q,r = 10,20,30
sum, avg = p+q+r,(p+q+r)/3
Los valores en el lado derecho del operador de asignacin se
asignarn sobre una base de uno a uno; por ejemplo, 10 se le
asignar a la variable p, 20 se le asignar a la variable q, y as
sucesivamente.
Del mismo modo, en el segundo ejemplo, el resultado de la expresin
p + q + r se asignar a la variable de suma, y el resultado de la
expresin (p + q + r) / 3 se asigna a la variable promedio.
Note
En una cadena entre comillas dobles, un carcter de escape se interpreta; en
una cadena entre comillas simples, se conserva un carcter de escape.
escapeseq.py
print('Hello World\nIt\'s hot today')
print('Festival Discount\b\b\b\b\b\b\b\b\b Offer')
print("Isn't it?")
print('Isn\'t it?')
print("He said: \"I am going \"")
print('\\Text enclosed in back slashes\\')
print ('Bell sound \a')
print('Name\tEmail Address\tContact Number')
Note
Syntax:
type(x)
donde x es el objeto cuyo tipo de datos se devolvern. La funcin acepta todo
tipo de parmetros, tales como nmeros enteros, cadenas, listas, diccionarios,
tuplas, funciones, clases y mdulos.
Examples:
type(10)
type('Hello')
El programa siguiente muestra los tipos de datos enteros,
flotadores, cadenas, booleanos, y as sucesivamente.
typeexample.py
a=10
b=15.5
c="Hello"
d=[2,9,4]
e=('apple', 'mango', 'banana')
f=True
print (type(a))
print (type(b))
print (type(c))
print (type(d))
print (type(e))
print (type(f))
Output:
<class 'int' >
<class 'float'>
<class 'str' >
<class 'list' >
<class 'tuple'>
<class 'bool' >
f para tipos
y Booleno,
de estas
type().
octhex.py
a=0o25
b=0x1af
print ('Value of a in decimal is', a)
c=19
print ('19 in octal is %o and in hex is %x' %(c,c))
d=oct(c)
e=hex(c)
print ('19 in octal is', d, 'and in hexa is', e)
Output:
Value of a in decimal is 21
19 in octal is 23 and in hex is 13
19 in octal is 0o23 and in hexa is 0x13
En este programa, las variables a y b se les asignan valores octales
y hexa, respectivamente. El valor octal se convierte y se muestra
como un decimal. Del mismo modo, el valor decimal 19 se convierte en
octal y hexa y visualiza usando las directivas %O y % x,
respectivamente. Adems, mediante el uso de las funciones oct() y
hex(), el nmero 19 se convierte a octal y hexadecimal,
respectivamente.
Syntax:
variable=input ('Message')
Los datos introducidos por el usuario se asigna a la variable en
formato de cadena. Si desea que los datos en otro formato (entero,
flotante, etc), se tiene que convertir de forma explcita. Antes de
ver la conversin explcita, vamos a hablar acerca de la conversin
automtica (coercin) en Python.
Coercion
En Python, si usted hace algunas operaciones aritmticas sobre los
operandos del mismo tipo de datos, no hay conversin automtica o la
coaccin se lleva a cabo. Cuando se calculan los operandos de
diferentes tipos de datos, la coaccin tiene lugar.
Python convierte el operando con el tipo "ms pequeo" para el tipo
"ms grande". Por ejemplo, si alguno de los operandos es un nmero
flotante, entonces el otro operando es tambin convierte a float
punto. Si el argumento es un nmero complejo, el otro tambin se
convierte en complejo.
Del mismo modo, si bien es de tipo long, el otro es convertido a
largo. Un operando entero se convierte a float mediante la adicin
de 0,0 a la misma.
Un tipo no complejo se convierte en un nmero complejo mediante la
adicin de un cero componente imaginario, 0j, a ella.
Para la conversin explcita, las funciones que se le con frecuencia
utilizando son int (), float (), y str (). La funcin que se
necesita para el siguiente programa es una funcin int().
int()
Syntax:
int([x[, base]])
La objeto x especificado se convierte en formato entero. El
parmetro de base
26 y se refiere a
de la base es 10.
cae. Por ejemplo,
arearectinput.py
l=input("Enter length: ")
b=input("Enter width: ")
a=int(l)*int(b)
print ("Area of rectangle is",a)
Output:
Enter length: 9
Enter width: 5
Area of rectangle is 45
Los valores suministrados por el usuario sern a travs de la
funcin de input(), que devuelve los valores proporcionados en
formato de cadena y por lo tanto se convierte en el tipo de datos
entero usando la funcin int().
Los valores introducidos por el usuario sern asignados a las
variables L y B, respectivamente. Como se dijo anteriormente, el
mtodo de entrada devuelve datos en formato de cadena, por lo tanto,
los valores en las variables L y B se convierte en primer lugar de
la cadena en formato entero a travs de la funcin int() antes de
que se utilizan en cualquier operacin aritmtica.
El siguiente programa calcula y devuelve el rea de un crculo. La
frmula es pi * r 2 . El r en la frmula se refiere al radio, y su
valor ser suministrado por el usuario.
areacircleinput.py
from math import pi
r=int(input("Enter radius: "))
a=pi*r*r
print ("Area of the circle is", a)
print ("Area of the circle is %.2f" %a)
Output:
Enter radius: 5
Area of the circle is 78.53981633974483
Area of the circle is 78.54
Bitwise Operations
Operaciones bit a bit
Cada numrica que se introduce en un ordenador
internamente en forma de dgitos binarios. Por
decimal 25 se representa internamente en forma
como 11001. Los operadores bit a bit operan en
binarios para dar los resultados deseados.
se representa
ejemplo, el valor
de dgitos binarios
estos dgitos
Note
bitwise.py
a=10
b=7
c=a&b
d=a ^ b
e= a | b
print ('The result of 10 and 7 operation is', c)
print ('The result of 10 exclusive or 7 operation is' , d)
print ('The result of 10 or 7 operation is', e)
g=a<<2
print ('Left shifting - Multiplying 10 by 4 becomes:' , g)
h=a>>1
print ('Right shifting - Dividing 10 by 2 becomes:',h)
Output:
The result of 10 and 7 operation is 2
The result of 10 exclusive or 7 operation is 13
The result of 10 or 7 operation is 15
Left shifting - Multiplying 10 by 4 becomes: 40
Right shifting - Dividing 10 by 2 becomes: 5
Los enteros 10 y 7 y el resultado de la aplicacin del operador
&(AND) en ellos se muestran en la Figura 2.2 (a). La figura muestra
que el operador AND devuelve 1 si ambos enteros son 1; de lo
contrario devuelve 0. Figura 2.2 (b) muestra el resultado de aplicar
el operador exclusiva o en los dos enteros, 10 y 7. Usted puede ver
que el operador OR exclusivo devuelve 1 si cualquiera de los dos
enteros es 1.
Figura 2.2 (c) muestra el resultado de aplicar el operador OR;
devuelve 1 si uno o ambos de los nmeros enteros son 1.
Complex Numbers
Un nmero complejo es la combinacin de un real y una imaginaria
componente, donde ambos estn representados por-punto flotante tipo
de datos. El componente imaginaria del nmero complejo es un
mltiplo de la raz cuadrada de menos uno y se denota por j.
Example:
3+1.2j
En este ejemplo, 3 es un componente real, y 1,2 es el
componente imaginario y es igual a 1,2 -1.
Los componentes real e imaginaria de un objeto complejo se
puede acceder mediante el uso de sus atributos real y imag.
El siguiente programa muestra la suma de dos nmeros complejos:
complex.py
a = 3.0 + 1.2j
b= -2.0 - 9.0j
print
c=a+b
print
print
print
Output:
The
The
The
The
two complex
addition of
addition of
addition of
Note
Los nmeros complejos se muestran entre parntesis()
Al escribir programas, se encuentra con una situacin en la que se
desea ejecutar una sentencia de bloque de los dos bloques. Es decir,
es necesario controlar el flujo del programa y ejecute una
instruccin de bloque de opciones disponibles, dependiendo de las
condiciones prevalecientes. Vamos a ver cmo tomar decisiones en
Python.
Making Decisions
Toma de decisiones
La afirmacin de que ayuda en la toma de decisiones y el control de
flujo del programa es la instruccin if ... else.
if...else statement
Syntax:
if (logical expression):
statement(s)
else:
statement(s)
Si la expresin lgica se evala como true, la sentencia if es
ejecutado; de lo contrario, se ejecuta la sentencia else.
Note
The else statement is optional.
Vamos a escribir un programa que pide al usuario que introduzca las
calificaciones del estudiante. Si las calificaciones son mayores o
iguales a 60, el programa debe mostrar un mensaje, Primera Divisin.
Si no es as, se debe mostrar el mensaje de la Segunda Divisin.
ifelse1.py
m=int(input("Enter grades: "))
if(m >=60):
print ("First Division")
else:
print ("Second Division")
Output:
Enter grades: 75
First Division
Enter grades: 50
Second Division
Se puede ver en este programa que el usuario introduce los grados a
travs de un mtodo de input(). Dado que el valor introducido por el
input() es en formato de cadena, se convierte a entero y se asigna a
la variable m. El uso de una instruccin if ... else, se comprueba
el valor de m variables. Si el valor en la variable m es mayor que o
igual a 60, el Si se ejecuta el bloque, la visualizacin de la
primera divisin mensaje.
ifelse2.py
m=int(input("Enter grades: "))
if(m >=60):
print ("First Division")
else:
if(m >=45):
print ("Second Division")
else:
print ("Third Division")
Output:
Enter grades: 75
First Division
Enter grades: 50
Second Division
Enter grades: 40
Third Division
Se puede ver en este programa que una instruccin if
se escribe dentro de una sentencia ms de lo externo
else. El si ... else ejecutar sentencia else dentro
sentencia else if la expresin lgica incluida en el
sentencia if se evala como False
... else
if ...
de la
exterior
if-elif-else statement
Si tiene varias expresiones lgicas para evaluar, y sobre la base de
esas expresiones lgicas que desea ejecutar un conjunto especfico
de bloque de cdigo, es necesario utilizar una sentencia if-elifelse
Syntax:
if (logical expression):
statement(s)
elif (logical expression 1):
statement(s)
[elif (logical expression n):
statement(s)]
else:
statement(s)
Se puede ver que la sentencia else y la sentencia if anidado
en ella se fusionan para formar una declaracin elif. Una
declaracin elif es til para evitar el sangrado excesivo. El
ifelse2.py programa que usted escribi anteriormente puede
reescribirse con una instruccin if-elif-else, como se
muestra aqu:
ifelif.py
m=int(input("Enter grades: "))
if(m >=60):
print ("First Division")
elif (m >=45):
Logical Operators
Al escribir expresiones lgicas, a veces es necesario combinar dos o
ms lgicas expresiones. Las expresiones lgicas se suelen combinar
con los operadores lgicos AND, OR y NOT. La lista de operadores
lgicos con una breve descripcin se muestra en la Tabla 2.4.
x and y
En la combinacin de las expresiones lgicas por el operador lgico
AND, primero se evala la expresin lgica x, y si devuelve false,
ifelse3.py
m=int(input("Enter grades: "))
if(m >=60):
print ("First Division")
if(m >=45 and m<60):
print ("Second Division")
if (m<45):
print ("Third Division")
Usted ve que si el grado introducido es mayor que 60, el primer caso
se ejecutar el bloque, mostrando la primera divisin mensaje. Si la
calificacin introducido es mayor que 45 y menor de 60, ambas
expresiones lgicas, m> = 45 y m <60, que es verdadero, y el mensaje
en el segundo bloque if, Segunda Divisin, se mostrar. Si la nota
introducida es inferior a 45, el tercer bloque if se ejecutar,
mostrando el mensaje de la Tercera Divisin.
x<=y <=z
Como era de esperar, si la expresin lgica x <= y es cierto,
entonces slo la expresin lgica y <= z se evaluar.
Por ejemplo, la declaracin se utiliza en el programa anterior, m> =
45 y m <60, se pueden encadenar para que aparezca como 45 <= m <60.
ifelschaining.py
m=int(input("Enter grades: "))
if(m >=60):
print ("First Division")
if(45<= m <60):
print ("Second Division")
if(m<45):
print ("Third Division")
Si el grado introducido es mayor que o igual a 45, la siguiente
parte de los operadores de cadena se evala para ver si el valor
introducido es menos de 60.
El siguiente programa pide al usuario que introduzca un valor entre
1 y 10 e imprime un mensaje basado en el valor introducido:
opr1.py
m=int(input("Enter a number between 1 and 10: "))
if 1<= m <=10:
print ("Number is within range")
else:
print ("Number is out of range")
Output:
Enter a number between 1 and 10: 3
Number is within range
Enter a number between 1 and 10: 15
Number is out of range
Se puede ver que el programa imprime el nmero de mensajes est
dentro del rango si el valor introducido es entre 1 y 10; de lo
contrario, se imprime el nmero de mensajes est fuera de rango
El siguiente programa determina si el valor introducido es par o
impar. El programa utiliza el operador de mdulo,%. Recuerde que el
operador mdulo devuelve el resto de la divisin.
evenodd.py
m=int(input("Enter a number "))
n = m%2
if n ==0:
print ("Number is even")
else:
print ("Number is odd")
Output:
Enter a number 6
Number is even
Enter a number 9
Number is odd
En este programa, se pide al usuario que introduzca un nmero que se
asigna a la variable m. La variable m se divide por 2, y si el resto
es 0, es decir, el nmero es un mltiplo de 2, un nmero de mensaje
es incluso se muestra. Del mismo modo, si el resto de la operacin
de divisin no es 0, el nmero no es mltiplo de 2, y el nmero es
impar se muestra.
Note
Python proporciona una funcin DIVMOD, que tiene dos numrica
argumentos y devuelve el cociente y el resto, por lo que no
tiene que usar tanto / / para el cociente y el% para el resto
Al escribir programas, a veces desea ejecutar algunas declaraciones
en varias ocasiones. Para tales situaciones, se utiliza bucles.
Vamos a ver cmo utilizar bucles en Python.
Loops- Bucles
Loops se utilizan para ejecutar un conjunto de instrucciones
mientras una expresin lgica es verdadera. Usted aprender dos
lazos en esta seccin: el bucle while y el bucle for.
Syntax:
while expression :
statement1
statement2
statement3
Aqu vemos que el bloque de cdigo en el bucle while se sangra. Por
qu?
Indentation sangra
Python utiliza sangra para expresar la estructura de bloque de un
programa. A diferencia de otros lenguajes, Python no utiliza
aparatos ortopdicos o comenzar delimitadores / fin para denotar
bloques. En su lugar utiliza la sangra para representar bloques de
instrucciones.
Un bloque es una secuencia contigua de lneas lgicas, todos con
sangra en la misma cantidad, y una lnea lgica con menos sangra
termina el bloque. La primera instruccin de un bloque no debe tener
sangra-no debe comenzar con cualquier espacio en blanco. Usted
puede utilizar tabuladores o espacios para declaraciones de sangra.
Python sustituye cada ficha con hasta ocho espacios.
Note
No mezclar espacios y tabuladores para el sangrado, como
pestaas pueden ser tratados de manera diferente por
diferentes editores.
El programa siguiente muestra los nmeros de 1 a 10 usando el bucle
while:
whileloop.py
k=1
while k <=10 :
print (k)
k=k+1
Output:
1
2
3
4
5
6
7
8
9
10
Se puede ver que el bucle while se establece para ejecutar siempre
que el valor de la variable k es menor o igual a 10. En el bucle, se
imprime el valor de la variable k y el incremento de su valor en 1
para imprimir el siguiente valor sucesivo .
Tambin se puede ver que el bucle while termina cuando la expresin
lgica se evala como falsa. Hay alguna otra manera de terminar un
bucle? Adems, y si desea saltar el bucle sobre la aparicin de
alguna condicin? La siguiente seccin explica cmo terminar y pase
un bucle.
Syntax:
break
El programa siguiente muestra cmo utilizar una sentencia break para
terminar un bucle while para imprimir 10 nmeros:
breakex1.py
k=1
while 1 :
print (k)
k=k+1
if(k>10):
break
Output:
1
2
3
4
5
6
7
8
9
10
Inicializa la variable k al valor 1. Adems, se establece un bucle
while para ejecutar infinitamente. En el bucle, se muestra variable
k y luego incrementas su valor en 1. Cuando k se convierte en ms de
10, que sale del bucle infinito a travs de la sentencia break.
Recuerde que el valor 1 representa el valor true. Tambin puede
reemplazar while 1 por while True para crear un bucle infinito.
Ahora echemos un vistazo a la declaracin que le dice a Python para
omitir la parte del bucle actual y comenzar con la siguiente
iteracin.
Syntax:
continue
El siguiente programa imprime los nmeros del 1 al 10, excepto para
el valor 7:
continueex.py
k=1
while k <=10 :
if k==7:
k+=1
continue
print (k)
k=k+1
Output:
1
2
3
4
5
6
8
9
10
En primer lugar, inicializar variable k para 1. Entonces, establecer
el bucle while para ejecutar siempre y cuando k es menor que o igual
a 10. En el bucle while, imprima el valor de k y luego incrementar
su valor en 1. Asimismo, omita el cuerpo del bucle a travs de una
sentencia continue cuando el valor de k es 7. Es decir, no se
imprimen k pero slo se incrementa su valor en 1 para ejecutar el
bucle con el siguiente valor de la secuencia.
passex1.py
k=1
while k <=10 :
if k==7:
pass
else:
print (k)
k+=1
Output:
1
2
3
4
5
6
8
9
10
Se puede ver que el valor de k se inicializa a 1. El bucle
while se ejecutar hasta k se hace mayor que 10. En el bucle
Note
Contenedores en Python comprende el conjunto, secuencias, como
listas, tuplas, y cadenas, y las asignaciones, como diccionarios.
Usted aprender acerca de estos contenedores en detalle en el
Captulo 3, "Secuencias".
Syntax:
for iterating_var in sequence:
statement1
statement2
statement3
El primer elemento de la secuencia se asigna a la variable de
iteracin iterating_var y se ejecuta el bloque de instrucciones. Uno
por uno, cada elemento de la secuencia se asigna a iterating_var, y
el bloque de instrucciones se ejecuta hasta que se termine toda la
secuencia.
El programa siguiente muestra los nmeros de 1 a 10:
forloop.py
for i in range(1,11):
print (i)
Esto imprime una secuencia de nmeros, que se generan de 1 a 10
utilizando la funcin integrada range(). Dado que no se indica el
valor de paso, el valor por defecto de 1 es el valor del paso.
El programa siguiente muestra los nmeros impares entre 1 y 10. Los
dos valores impares sucesivos difieren en 2, por lo que utilizan el
valor de paso de 2 en la funcion range().
forloop2.py
print ("Odd numbers between 1 and 10 are:")
for i in range(1,11,2):
print (i)
Output:
Odd numbers between 1 and 10 are:
1
3
5
7
9
La funcin range(1,11,2) en primer lugar generar un valor de 1. A
este valor se aadir el valor del paso 2 para generar el siguiente
valor de la lista, 3. El proceso continuar hasta que el valor
generado es menor o igual a 10.
Un bucle se puede utilizar para imprimir valores aleatorios a partir
de una tupla. Vamos a discutir tuplas en detalle en el prximo
captulo. Por ahora es suficiente saber que una tupla es un objeto
inmutable que se puede utilizar para representar un conjunto de
valores de cualquier tipo de datos.
Los valores o elementos de una tupla se incluyen entre parntesis,
(). Un objeto inmutable es uno que no se puede cambiar una vez que
Membership Operators
Operadores de membresa
Pruebas de un operador de membresa para formar parte de una
secuencia, como cadenas, listas o tuplas. Hay dos operadores de
afiliacin, como se muestra en la Tabla 2.5.
for i in ( 7, 3, 8, 1, 4 ):
print i
Aqu usted proporciona una tupla de valores en el bucle for.
El primer valor de la tupla se asignar a la variable i, y se
ejecuta el bucle. A continuacin, el siguiente valor de la tupla
ser asignado a i y el bucle se ejecuta. El bucle se ejecutar con
cada valor de la tupla. En el cuerpo del bucle se muestra slo el
Note
Para utilizar la funcin opcin() en un programa, es
necesario importar un mdulo random.
Example:
k=choice([2,4,6,8,10])
Usted recibir un valor aleatorio extrado desde la secuencia
especificada, lo cual puede ser de 2, 6, o algn otro valor de la
lista.
randomnumber.py
from random import choice
k=choice(range(1,10))
print ("Random number is",k)
Output:
Random number is 4
Random number is 1
En este programa, la funcin range() devolver valores entre 1 y 9.
La funcin choice() recoger cualquier valor al azar de estos nueve
valores y asignarla a la variable k, que luego se muestra en la
pantalla. Cada vez que se ejecuta el programa, la funcin choice()
devuelve un valor aleatorio.
primes.py
print (1)
for i in range(2,101):
x=1
for j in range(2, i):
n=i%j
if n==0:
x=0
break
if x==1:
print (i)
Output:
1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Summary
En este captulo usted aprendi a aplicar operaciones aritmticas y
diferentes operadores lgicos y de membresa en programas Python.
Tambin vio el uso de secuencias de escape. Para mejorar la
interaccin con el usuario, que ha aprendido a obtener datos del
usuario y procesar los datos entrantes. Ustedes vieron la conversin
de los datos en diferentes tipos. Tambin ha aprendido a mostrar los
valores octales y hexa, realizar operaciones a nivel de bits y
utilizar los nmeros complejos. Tambin vio el uso de if ... else en
la toma de decisiones. Por ltimo se vio usando bucles while y for
para realizar tareas repetitivas.
En el prximo captulo, usted va a aprender sobre los recipientes:
secuencias, correspondencias y conjuntos. Una secuencia incluye
cadenas, listas y tuplas, y las asignaciones incluyen diccionarios.
Tambin aprender a realizar operaciones en secuencias a travs de
sus respectivos mtodos. Adems, usted aprender acerca de una y
matrices bidimensionales. Por ltimo, aprender a aplicar las
operaciones de conjuntos tales como los sindicatos, las
intersecciones y diferencias ..
Chapter 3. Sequences
En este captulo se tratan los siguientes temas:
Sequences
Una secuencia contiene objetos que se guardan en un orden
especfico. Se puede identificar un objeto en una secuencia por su
ubicacin de ndice. Adems, se puede extraer de una secuencia con
la operacin de corte. En este captulo se ver en tres ejemplos de
secuencias: listas, tuplas, y cadenas.
Note
Strings
Una cadena es una secuencia de caracteres que se utilizan para
almacenar y representar la informacin de texto. Un literal de
cadena se puede encerrar en simple ('), dobles (") o comillas
triples (''') Las cadenas son inmutables en Python,. Usted no puede
modificar un objeto cadena existente Cuando se realiza una operacin
en un objeto de cadena, usted. crear un nuevo objeto de cadena.
Ejemplos de cadenas en comillas simples, dobles y triples son los
siguientes:
k='Hello World!'
k="Hello World!"
k='''
Hello World!
It\' s hot today
Let\'s party '''
Note
A diferencia de otros lenguajes de programacin, no hay ningn
tipo de datos de carcter independiente en Python. Un carcter
se considera una cadena de longitud uno.
Dnde 0,1 ... son el ndice. Una cadena es terminada por un carcter
NULL, \ 0. Puede acceder a cualquier carcter de la cadena a travs
de su ndice. Por ejemplo, K [0] accede al primer carcter, D, K [1]
accede al segundo carcter, una, y as sucesivamente.
Cadenas de Python soportan varios mtodos y funciones. Cul es la
diferencia entre las funciones y los mtodos?
50
is numeric
fifty
is not numeric
s="Hello World!"
print ("Original String is", s)
print('String after toggling the case:', s.swapcase())
print ("String in uppercase is", s.upper())
if (s.istitle()):
print("String in lowercase is", s.lower())
print("String,", s, "is in title case:", s.istitle())
print ("String in capitalized form is", s.capitalize())
Output:
Original String is Hello World!
String after toggling the case: hELLO wORLD!
String in uppercase is HELLO WORLD!
String in lowercase is hello world!
String, Hello World! is in title case: true
String in capitalized form is Hello world!
El siguiente programa muestra el primer carcter de la cadena
introducida. Adems, la cadena introducida se muestra carcter sabia
cada carcter se muestra uno por uno
characterwise.py
s=input("Enter a string: ")
n=len(s)
print ("The first character of", s, "is", s[0])
print ("The entered string will appear character wise as:")
for i in range(0,n):
print (s[i])
print ("The entered string will appear character wise as:")
for i in s:
print (i)
print ("String with its characters sorted is", sorted(s))
print ("String in reverse form is", "".join(reversed(s)))
Output:
.
A sabiendas de que el ndice de una cadena est basado en cero, se
muestra el primer carcter de la cadena mediante el acceso a la
ubicacin de ndice 0. El programa tambin encuentra la longitud de
la cadena introducida e imprime cada uno de sus caracteres travs de
su ndice. Adems, el programa utiliza el operador de miembro para
acceder y mostrar cada carcter de la cadena. El programa muestra
los caracteres de la cadena despus de ordenar alfabticamente. Por
ltimo, la cadena se invierte y se muestra el uso de la funcin
reserved().
El siguiente programa muestra el carcter mximo y mnimo alfabtico
en una cadena introducida. Adems, el programa convierte el nmero
Output:
Enter a string: enormous
The string entered is: enormous
The maximum alphabetical character from the string is: u
The minimum alphabetical character from the string is: e
Enter a number: 53
The number in string form is 53 its length is 2 and its first digit is 5
The string after joining character # to the string Nice Day : N#i#c#e# #D#a#y
The string after joining word, hello to the string Nice Day :
Nhelloihellochelloehello
helloDhelloahelloy
Se puede ver que las dos cadenas son introducidos Hola y ABC. La
cadena Hola se une a cada carcter de la cadena de ABC.
Haga cadenas en los mtodos de soporte de Python que ayudan en la
bsqueda o la bsqueda de una subcadena en una cadena? S. La Tabla
3.2 muestra los mtodos de las cadenas que ayudan en la bsqueda de
subcadenas de una cadena.
Table 3.2. String Methods Used to Find Substrings in
a String
searchstr2.py
p=input("Enter a string: ")
print ("Entered String is", p)
q=input("Enter the substring to search: ")
r=p.count(q)
if r==0:
print (q, "not found in", p)
else:
print (q, "occurs in", p, r, "times")
Output:
Enter a string: alabalabalab
Entered String is alabalabalab
Enter the substring to search: la
la occurs in alabalabalab 3 times
Output:
Enter your first name and last name: Caroline Stevens
The name after interchanging first and last name: Stevens Caroline
En este programa, los nombres y apellidos introducidos por el
usuario se asigna a la variable n. El nombre de la variable n se
divide en tres partes sobre la presencia del espacio blanco, con el
metodo partition(): el nombre, el espacio en blanco, y apellido.
Para intercambiar el nombre y apellido, se muestra la tercera parte,
seguido de la primera parte de la cadena.
El programa siguiente muestra tres mtodos: partition(), replace() y
split():
breaking.py
s='education '
k=s.partition('cat')
print('The word', s, 'is partitioned into three parts')
print('The first part is', k[0], 'separator is', k[1], 'and the third part
is',k[2])
t=input('Enter a sentence: ')
print('The original sentence is', t)
print('The sentence after replacing all the characters "a" by "#" is:',
t.replace('a','#'))
print('The sentence after replacing first three "a" characters by "#" is:',
t.replace('a', '#', 3))
u=t.split(' ')
print('The words in the entered sentence are', u)
print('The words in the entered sentence are')
for i in range(0, len(u)):
print(u[i])
u=t.split(' ',1)
print('The sentence is split into two parts:', u[0], 'and', u[1])
Output:
The word education is partitioned into three parts
The first part is edu separator is cat and the third part is ion
Enter a sentence: amazing day in alaska
The original sentence is amazing day in alaska
The sentence after replacing all the characters "a" by "#" is: #m#zing d#y in
#l#sk#
The sentence after replacing first three "a" characters by "#" is: #m#zing d#y in
alaska
The words in the entered sentence are ['amazing', 'day', 'in', 'alaska']
The words in the entered sentence are
amazing
day
in
alaska
The sentence is split into two parts: amazing and day in Alaska
Arrays
Matrices numricas se utilizan para almacenar datos numricos.
Puesto que no tienen caracteres NULL, arrays numricos no son
terminados por caracteres NULL como con las cadenas, pero el
concepto de ndice todava se aplica a ellos para tener acceso a sus
elementos. Las matrices son de dos tipos, las matrices de una y de
dos dimensiones.
Los valores son los ndices que se pueden utilizar para acceder a
los elementos de la matriz. Es decir, p [0] ser acceder al primer
elemento de la matriz 8, p [1], acceder a la segundo elemento de la
matriz 3, y as sucesivamente.
El programa siguiente muestra la creacin de una matriz numrica de
cinco elementos:
numericarr.py
p= [ 0 for i in range(5) ]
print ("Enter five numbers")
for i in range(5):
p[i]= int(input())
Two-Dimensional Arrays
Arrays de dos dimensiones se dividen en filas y columnas. . Los
ndices de fila y columna comienzan a valor 0 Para acceder a cada
elemento de la matriz, debe especificar dos ndices; uno representa
la fila, y el otro representa la columna. Ambos se encuentran
encerrados entre corchetes.
En la figura 3.3 se ve que todos los lugares de la matriz est
representado por una fila y ubicacin de la columna. El ndice p [0]
[0] hace referencia al elemento almacenado en fila 0 y la posicin
de columna 0. Del mismo modo, el ndice p [0] [1] se refiere al
elemento que se almacena en la fila 0 y la posicin primera columna
de la matriz de dos dimensiones.
de la matriz.
matrix1.py
table= [ [ 0 for i in range(3) ] for j in range(3) ]
print ("Enter values for a matrix of order 3 x 3")
for d1 in range(3):
for d2 in range(3):
table[d1][d2]= int(input())
print ("Elements of the matrix are", table)
print ("Elements of the matrix are")
for row in table:
print (row)
s=0
for row in table:
for n in row:
s+=n
print ("The sum of elements in matrix is",s)
Output:
Enter values for a matrix of order 3 x 3
1
2
3
4
5
6
7
8
9 Elements of the matrix are [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Elements of the matrix are
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
The sum of elements in matrix is 45
Lists listas
Una lista es una coleccin de elementos, que podra incluir otras
listas. Listas comienzan y terminan con un corchete, y los elementos
en el interior se separan con comas.
["John", "Kelly", 1, 2, [Sugar, Butter, 10]]
Output:
John
Kelly
Caroline
Paula
Output:
Enter a value between 1 and 12: 5
The month is May
Enter a value between 1 and 12: 13
Value is out of the range
list7.py
names=[]
n=int(input("How many names? "))
print("Enter", n, "names")
for i in range (0,n):
m=input()
names.append(m)
print ("The original list of names is", names)
p=input ("Enter the name to search: ")
if p in names:
print ("The name", p, "is found in the list at location ", names.index(p)+1)
else:
print ("The name", p, "is not found in the list ")
q=input ("Enter the name to update/change: ")
if q in names:
loc=names.index(q)
r=input("Enter the new name: ")
names[loc]=r
print ("The name", q, "in the list is changed to", r)
else:
print ("The name", q, "is not found in the list")
names.sort()
print ("Sorted names are", names)
Output:
How many names? 4
Enter 4 names
Kelly
Caroline
David
Beth
The original list of names is ['Kelly', 'Caroline', 'David', 'Beth']
Enter the name to search: David
The name David is found in the list at location 3
Enter the name to update/change: Caroline
Enter the new name: Candace
The name Caroline in the list is changed to Candace
Sorted names are ['Beth', 'Candace', 'David', 'Kelly']
Tuples -Tuplas
Las tuplas son un tipo de secuencia, como cadenass. Pero a
diferencia de las cadenas, que pueden contener slo caracteres,
tuplas pueden contener elementos de cualquier tipo. Una tupla es un
objeto inmutable que no se puede cambiar una vez que se haya creado.
Al igual que con todas las secuencias, los ndices de tupla se basan
en cero; el primer elemento est en el ndice 0, y el ltimo
elemento est en el ndice -1.
El programa siguiente muestra cmo se define una tupla y cmo se
accede y visualiza sus elementos:
tup1.py
names=('John', 'Kelly', 'Caroline', 'Steve', 'Katheline')
print ("The names in the tuple are:", names)
print ("The first name in the tuple is", names[0])
print ("The last name in the tuple is", names[len(names)-1])
print ("The names in the tuple are")
for n in names:
print (n)
Output:
The names in the tuple are: ('John', 'Kelly', 'Caroline', 'Steve',
'Katheline')
The first name in the tuple is John
The last name in the tuple is Katheline
The names in the tuple are
John
Kelly
Caroline
Steve
Katheline
Output:
Enter the name to search: Beth
The name Beth does not exist in the tuple
The tuples are concatenated. The concatenated tuple is ('John', 'Kelly',
'Caroline','Steve', 'Katheline', 'U.S.', 'U.K', 'India')
Dictionary
Un diccionario es una combinacin de pares key/value en el que cada
key tiene que ser nico. Pares clave / valor estn separados por dos
puntos, y los pares se separan por comas. Los pares clave / valor
estn encerrados en una llaves.
Syntax:
d = {key1 : value1, key2 : value2 }
Output:
Enter country: U.S.
The capital of U.S is Washington D.C.
The dictionary after adding a country:
Capital of U.S. is Washington D.C.
Capital of Australia is Sweden
Capital of India is New Delhi
Capital of U.K. is London
Enter the country to delete: U.K.
The dictionary after deleting a country:
Capital of U.S. is Washington D.C.
Capital of Australia is Sweden
Capital of India is New Delhi
Sets Conjuntos
Un conjunto es una coleccin de ciertos valores. Puede llevar a cabo
una serie de operaciones de conjunto, incluyendo la unin (|),
interseccin (&), diferencia (-), y diferencia simtrica (^). Vamos
a comenzar con la operacin de unin.
Union (|)
En una operacin de unin, un elemento aparece en la union si existe
en un grupo u otro. Por ejemplo, considere los dos conjuntos S1 y S2
con los siguientes elementos:
S1=set([3,5,6,10,11,100])
S2=set([1,3,5,6,11,15])
Intersection (&)
En una operacin de interseccin, los elementos que aparecen en
ambos conjuntos aparecen en la interseccin.
S1 & S2 se mostrarn la interseccin como:
set([3, 5, 6, 11])
Difference (-)
En una operacin de diferencia, todos los elementos que estn en el
El siguiente programa muestra el uso de mtodos set como max (), min
(), any(), all(), sum(), y se sorted(). El programa tambin
demuestra la aplicacin de unin, interseccin, diferencia, y las
operaciones de fusion de los conjuntos .
setexample.py
S1=set([3,5,6,10,11,100])
S2=set([1,3,5,6,11,15])
print ('Length of set S1 is:', len(S1))
print ('Maximum value in set S1 is:' , max(S1))
print ('Minimum value in set S2 is:' , min(S2))
print ('Sum of items in set S1 is:', sum(S1))
print ('Applying any() to set S1 results into:', any(S1))
print ('Union of the two sets is:', S1 j S2)
print ('Intersection of the two sets is:', S1 & S2)
print ('Difference of S1-S2 is:' , S1 - S2)
print ('Difference of S2-S1 is:' , S2 - S1)
S1.add(0)
print ('The items in set S1 after adding an item are:' , sorted(S1))
print ('As set S1 now has a value 0, so all() will result into:',
all(S1))
S1.update(S2)
print ('The items in set S1 after merging set S2 are:' , sorted(S1))
Output:
Length of set S1 is: 6
Maximum value in set S1 is: 100
Minimum value in set S2 is: 1
Sum of items in set S1 is: 135
Applying any() to set S1 results into: true
Union of the two sets is: {1, 3, 100, 5, 6, 10, 11, 15}
Intersection of the two sets is: {11, 3, 5, 6}
Difference of S1-S2 is: {10, 100}
Difference of S2-S1 is: {1, 15}
The items in set S1 after adding an item are: [0, 3, 5, 6, 10, 11, 100]
As set S1 now has a value 0, so all() will result into: false
The items in set S1 after merging set S2 are: [0, 1, 3, 5, 6, 10, 11,
15, 100]
Summary
En este captulo se centra en diferentes recipientes. Usted aprendi
a realizar diferentes operaciones en las cadenas, incluida la
concatenacin, la divisin, y su conversin en diferentes casos como
maysculas, caso del ttulo, y en minsculas.
Tambin ha aprendido sobre la lista de corte y elementos en bsqueda
de tuplas. Ha realizado operaciones en conjuntos como la bsqueda de
su unin, interseccin y diferencia. Usted vio cmo se mantienen los
pares clave / valor en un diccionario y cmo aadir, eliminar y
modificar los pares clave / valor. Por ltimo, ha creado matrices de
una y dos dimensiones.
Functions
Una funcin es un grupo de sentencias que se pueden invocar
cualquier nmero de veces. Adems de las funciones incorporadas,
puede definir sus propias funciones. La afirmacin de que invoca una
funcin se conoce como una llamada de funcin.
Al llamar a una funcin, se pueden pasar argumentos a ella para
realizar el clculo deseado. En Python, una funcin siempre devuelve
un valor que puede ser None o que representa la tarea realizada por
la funcin.
En Python, las funciones son tratados como objetos, y por lo que
puede pasar una funcin como argumento a otra funcin. Del mismo
modo, una funcin puede devolver otra funcin. Adems, una funcin,
al igual que cualquier otro objeto, se puede enlazar a una variable,
un elemento de un contenedor o un atributo de un objeto.
Echemos un vistazo a las afirmaciones utilizadas en la definicin de
una funcin.
"one"
"two"
"three"
"four"
"one"
"two"
"three"
"four"
print (conv(2))
print (conv(0))
Output:
two
None
Se puede ver que cuando el valor 2 se pasa como un argumento a la
funcin conv(), el respectivo si se ejecuta la declaracin para
mostrar el texto dos. Cuando 0 se pasa a la funcin conv(), el
primero si se ejecuta la declaracin de la funcin.
No hace nada, ya que contiene la sentencia pass, por lo que se
devuelve None. Recuerde que la sentencia pass indica un bloque vaco
de enunciados. Se utiliza por lo general como un marcador de
posicin para el cdigo va a escribir ms tarde.
keywordarg.py
Global Variables
Las variables globales no estn vinculados a cualquier funcin
particular, y se puede acceder dentro del cuerpo de la funcin,
fuera del cuerpo de la funcin, o por cualquier otra funcin. Los
cambios realizados en una variable global por cualquier funcin
sern visibles por otras funciones. Si una funcin de las
necesidades de las variables globales, la primera declaracin de la
Local Variables
De forma predeterminada, cualquier variable que se une dentro de un
cuerpo de la funcin es una variable local. Cada funcin tiene su
propia copia de una variable local, y su valor no es accesible o
modificable fuera del cuerpo de la funcin.
El siguiente programa muestra el uso de variables locales:
localvar.py
def compute(x):
x += 5
print ("Value of x in function is", x)
return None
x=10
compute(x)
print ("Value of x is still", x)
Output:
Value of x in function is 15
Value of x is still 10
El programa principal inicializa el valor de la variable local x en
10. La variable x se pasa a la funcin de computo() como un
argumento. En la funcin de computo(), el valor del parmetro x se
incrementa en 5, haciendo su valor 15. Pero ellos x es local para la
funcin, el valor modificado de x (15) slo es visible dentro del
cuerpo de la funcin compute(). Cuando se muestra el valor de x en
la funcin cmpute(), se imprimir el valor modificado 15, pero
cuando regresa al programa principal, el programa recoge el valor
anterior de x (10). Por lo tanto, el programa principal se imprime
el valor antiguo de x, 10.
Lambda Functions
Para las funciones que son lo suficientemente pequeas (una
expresin de una sola lnea) y que van a ser usados slo una vez,
por lo general no define los objetos de funcin. En cambio, el uso
de funciones lambda.
Una funcin lambda es una funcin annima y de slo un solo uso que
puede tener cualquier nmero de parmetros y que hace algn clculo.
El cuerpo de la funcin lambda es pequeo, una sola expresin. El
resultado de la expresin es el valor cuando se aplica la lambda
para un argumento. No hay necesidad de una instruccin de retorno en
las funciones lambda.
nota
El mbito de aplicacin de una funcin lambda es limitada. Slo
existe en el mbito de la ejecucin de una sola sentencia.
Considere una pequea funcin que multiplica un argumento pasado por
2 y devuelve, como se muestra aqu:
def f(x):
return x*2
f(3)
6
Se puede ver que una funcin f toma un parmetro x que vuelva al
multiplicar por 2. Al llamar a la funcin con el argumento 3,
volver 6 como salida. Puede volver a escribir esta funcin como una
funcin lambda:
g = lambda x: x*2
g(3)
6
Se puede ver que la funcin lambda no tiene nombre y se llama a
travs de la variable que est asignado.
Usted puede utilizar una funcin lambda incluso sin asignarla a una
variable. La siguiente es una funcin lambda sin nombre que acepta
un solo argumento. Se multiplica el argumento por 2 y devuelve el
resultado:
(lambda x: x*2)(3)
6
Se puede ver que no hay parntesis alrededor de la lista de
Description
functionname.__doc__
functionname.__name__
functionname.__module__
functionname.__defaults__
functionname.__code__
functionname.__dict__
nota
Puede configurar y obtener sus propios atributos de funcin,
tambin.
El siguiente programa muestra el uso de la funcin de los atributos
para mostrar informacin especfica de la funcin, como su versin,
autor, docstring y argumentos por defecto.
funcattrib.py
def sum(a, b=5):
"Adds the two numbers"
return a + b
sum.version= "1.0"
sum.author= "bintu"
k=sum(10,20)
print ('Sum is', k)
print('The documentation string is', sum.__doc__)
print('The function name is', sum.__name__)
print('The default values of the function are', sum.__defaults__)
print('The code object of the function is', sum.__code__)
print('The dictionary of the function is', sum.__dict__)
Output:
Sum is 30
The documentation string is Adds the two numbers
The function name is sum
The default values of the function are (5,)
The code object of the function is <code object sum at 0x00F11250, file
"D:\python\
funcattrib.py", line 1>
The dictionary of the function is {'version': '1.0', 'author': 'bintu'}
Documentation String
La cadena de documentacin (docstring) ayuda a documentar el
programa mejor y hace que sea ms fcil de entender. Una cadena en
la primera lnea lgica de una funcin es la cadena de documentacin
para esa funcin. Para mostrar una cadena de documentacin, se
utiliza el atributo siguiente:
__doc__
Recursion - La recursividad
La recursividad se dice que ocurre cuando una funcin se llama a s
mismo. Como era de esperar, una funcin que se autodenomina generar
llamadas a funciones recursivas y resultar en un bucle infinito.
Cuando la aplicacin de la recursin, una condicin de salida debe
ser incluido en la funcin.
nota
La recursin se implementa con la ayuda de una estructura
conocida como una pila.
Vamos a examinar el concepto de recursividad a travs de un ejemplo.
El siguiente programa calcula la suma de 10 nmeros utilizando
recursividad:
recurfunc.py
def addseq(x):
if x == 1: return 1
else: return x + addseq(x-1)
print ('The sum of first 10 sequence numbers is', addseq(10))
Output:
The sum of first 10 sequence numbers is 55
5 * fact(4)
La llamada a la funcion fact(4) pasar 4 al parmetro x, y de nuevo
se ejecutar la sentencia else y regresar la siguiente declaracin:
4* fact(3)
Una vez ms la llamada a la funcion fact(3) pasar 3 al parmetro x,
lo que resulta en la ejecucin de la sentencia else otra vez. El
proceso contina hasta que el valor asignado al parmetro x es 1, en
cuyo caso se cierra la funcin, devolviendo 1. La expresin completa
que resulta en la ejecucin de la programa es la siguiente:
5*4*3*2*fact(1) or
5*4*3*2*1
El programa imprime el resultado como 120, que es el factorial de 5.
iter(object)
El mtodo iter() se utiliza para obtener un objeto iterador. El
mtodo iter (objeto) se pide que el metodo de objeto __ iter__
conseguir un objeto iterador. Una vez, se obtiene un objeto
iterador, se puede recorrer en iteracin el objeto utilizando su
mtodo next().
El siguiente programa muestra todos los elementos de una lista con
el objeto iterador:
createiter.py
names=['John', 'Kelly', 'Caroline', 'Paula']
i = iter(names)
print (i.__next__())
print (i.__next__())
print (i.__next__())
print (i.__next__())
print (i.__next__())
Output:
John
Kelly
Caroline
Paula
Traceback (most recent call last):
File "D:\python\createiter.py", line 7, in <module>
print (i.__next__())
StopIteration
Generators Generadores
Un generador es una funcin que crea un iterador. Para una funcin
para convertirse en un generador, debe devolver un valor mediante la
palabra clave de yield. En otras palabras, la funcin de generador
utiliza la palabra clave de yield para obtener el siguiente valor en
el recipiente.
yield
La declaracin de yield se utiliza slo cuando se define una funcion
de generador funciones y slo se utiliza en el cuerpo de la funcin
de generador. La presencia de una declaracin de yield en una
definicin de la funcin normal de la convierte en una funcin de
generador. Cuando un generador de funciones se llama, devuelve un
iterador conocido como un iterador generador, o simplemente un
generador. El cuerpo de la funcin del generador es ejecutada por
una llamada al mtodo del generador __ next__ () varias veces hasta
que se produzca una excepcin.
generatorex.py
def fruits(seq):
for fruit in seq:
yield '%s' % fruit
f=fruits(['Apple', 'Orange', 'Mango', 'Banana' ])
print ('The list of fruits is:' )
print (f.__next__())
print (f.__next__())
print (f.__next__())
print (f.__next__())
f=fruits(['Apple', 'Orange', 'Mango', 'Banana' ])
print ('The list of fruits is:' )
for x in f:
print (x)
Output:
The list of fruits is:
Apple
Orange
Mango
Banana
The list of fruits is:
Apple
Orange
Mango
Banana
Output:
The squares of first five sequence numbers
0
1
4
9
16
25
Modules
Un mdulo es un archivo que consta de un par de funciones y
variables que se utilizan para una tarea particular. Un mdulo puede
ser reutilizado en cualquier otro programa que lo importa. Las
funciones y variables del mdulo que se disponga en el programa
actual y se pueden utilizar en el mismo. El nombre de archivo del
mdulo debe tener una extensin .py.
Para importar un mdulo a un programa, se utiliza la sentencia
import. Puede utilizar la importacin en varias formas. Considere la
posibilidad de un mdulo de calendario que muestra un calendario de
un mes y el ao especificado. Vamos a echar un vistazo a las
diferentes formas de importar un mdulo de calendario en el programa
actual. La primera forma es a travs de esta declaracin:
import calendar
prcal()
'intern' ,
'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', '
path_importer_
cache', 'platform', 'prefix', 'setcheckinterval', 'setprofile', '
setrecursionlimit',
'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion' ,
'version', 'version_info', 'warnoptions', 'winver'
Summary resumen
En este captulo usted aprendi acerca de las diferentes
declaraciones que definen y valores devueltos de funciones. Tambin
aprendi a utilizar los parmetros de valor predeterminado y
argumentos de palabras clave en una funcin. Usted aprendi a
utilizar las variables locales y globales. Para las expresiones ms
pequeas, usted aprendi a crear funciones lambda. Tambin, usted
vio cmo aplicar funciones a las secuencias utilizando diferentes
atributos de funcin e implementar recursividad. Para acceder a las
colecciones de datos, usted aprendi a utilizar iteradores,
generadores, y las expresiones generadoras. Para utilizar las
funciones incorporadas, usted aprendi a importar y utilizar
mdulos. Por ltimo, usted vio cmo pasar argumentos de lnea de
comandos para un programa Python.
El siguiente captulo tratar de la programacin orientada a objetos
(POO). Usted aprender a definir las clases, definir funciones en
una clase, y el uso de atributos de clase. Usted aprender a
inicializar las variables de instancia a travs del mtodo __init__.
Usted aprender a definir y utilizar clases y mtodos estticos.
Usted ver cmo Python elimina los objetos que salen de alcance a
travs de la recoleccin de basura. El captulo tambin trata un
tema importante en la programacin orientada a objetos, la herencia.
Usted aprender a aplicar sola, multinivel, y la herencia mltiple.
Usted tambin aprender a aplicar el mtodo de primer orden y las
operaciones aritmticas a travs de las instancias la sobrecarga de
operadores. En el captulo tambin se explicar el concepto de
polimorfismo y el uso de propiedades y descriptores.
Chapter 5. Classes
En este captulo se tratan los siguientes temas:
Definicin de las clases
El uso de atributos de clase
Definicin de funciones en una clase
Acceso a variables de clase en los mtodos de instancia
Creacin de instancias e inicializar variables de instancia a
travs del mtodo __init__ ()
Uso de clases y mtodos estticos
Entender Recoleccin de basura
Comprender-herencia simple, multinivel, y la herencia mltiple
El uso de los especificadores de control de acceso
Mtodo primordial
La sobrecarga de operadores
polimorfismo
Utilizacin de las propiedades y los descriptores
Description
__name__
El identificador de nombre de la
clase utilizada en la declaracin de
clase.
__bases__
__dict__
__doc__
La cadena de documentacin de la
clase.
__module__
objeto.
en un
objeto
El
en un
b=5
def area(self):
print rect.l*rect.b
Instances
Una clase es una plantilla o modelo de datos y operaciones; utilizar
los datos y operaciones de forma independiente, lo que necesita para
crear instancias. Una instancia es una variable que acta como una
rplica de una clase. Puedes crear tantas instancias de una clase si
lo deseas.
Cada instancia recibe una copia por separado de los mtodos y los
atributos definidos en la clase. Cada instancia puede tener acceso a
los mtodos y atributos de la clase de forma independiente, y un
atributo de una instancia no interferir con un atributo de la otra
instancia. Tambin significa que a travs de los casos, puede
utilizar una clase para realizar operaciones con varios conjuntos de
datos diferentes. Para crear una instancia de una clase, se llama a
la clase de objeto como si fuera sin parmetros, como se muestra
aqu:
r=rect()
Usted puede ver que el objeto de clase rect se llama como si se
trata de una funcin. Cada llamada devuelve una nueva instancia de
esa clase. La declaracin anterior devuelve una nueva instancia de
la clase, rect, y lo asigna a la variable r.
El siguiente programa calcula el rea de un rectngulo mediante la
creacin de una instancia de la clase y la invocacin de un mtodo a
travs de la instancia:
rectclass3.py
class rect:
l=8
b=5
def rectarea(self):
return rect.l * rect.b
r=rect()
print ("Area of rectangle is ", r.rectarea())
Output:
Area of rectangle is 40
Output:
Area of rectangle is 40
Se puede ver que el mtodo __ init__ define los valores por defecto
para los parmetros x e y como 8 y 5. Las dos instancias de rect se
crean como r y s. La instancia r no tiene argumentos para el mtodo
Class Methods
Mtodos de la clase
Un mtodo de clase no tiene ningn argumento self y recibe una clase
como su primer argumento. Por convencin, el argumento al mtodo de
la clase se llama cls. Es decir, en un mtodo de clase, la clase en
la que se llama se le pasa como primer argumento. El mtodo de la
clase tambin se puede llamar directamente a travs del objeto de
clase sin crear instancias de la clase.
Un mtodo de clase se define utilizando el decorador @classmethod.
Un decorador proporciona un mtodo conveniente para insertar y
modificar el cdigo en funciones o clases.
Syntax:
@classmethod
def f(cls, parm1, parm2, . . .):
body of the method
Este muestra un mtodo de clase, f, con pocos parmetros parm1,
parm2, y as sucesivamente.
El programa siguiente crea una clase, as como un mtodo de
instancia y accede a ellos para mostrar el contenido de las
variables de instancia y de clase.
classmethod.py
class book:
price=100
@classmethod
def display(cls):
print (cls.price)
def show(self,x):
self.price=x
print (self.price)
b=book()
c=book()
book.display()
b.display()
b.show(200)
c.show(300)
Output:
100
100
200
300
destructor.py
class rect:
n=0
def __init__(self,x,y):
rect.n +=1
self.l=x
self.b=y
def __del__(self):
rect.n -=1
class_name = self.__class__.__name__
print(class_name,' destroyed')
def rectarea(self):
print ('Area of rectangle is ', self.l * self.b)
def noOfObjects(self):
print ('Number of objects are: ', rect.n)
r=rect(3,5)
r.rectarea()
s=rect(5,8)
s.rectarea()
r.noOfObjects()
del r
s.noOfObjects()
del s
Output:
Area of rectangle
Area of rectangle
Number of objects
rect destroyed
Number of objects
rect destroyed
is 15
is 40
are: 2
are: 1
Inheritance herencia
La herencia es una tcnica de copiar los miembros de datos y las
funciones miembro de una clase existente en otra clase. Es decir, en
lugar de comenzar desde cero, una clase existente se puede heredar,
y los miembros adicionales de datos y funciones de miembro puede ser
definido. La clase que se hereda se llama clase base o la super
clase, y la clase heredada se denomina clase derivada o subclase. La
subclase hereda todas las propiedades de la clase base y por lo
tanto da lugar a ahorrar tiempo y esfuerzo.
Clase B hereda la
clase A o clase B se
deriva de la clase A. Una clase derivada tiene que identificar la
class triangle(rect):
Esta declaracin indica que rect es una clase base, y el tringulo
es una clase derivada.
Considere el siguiente programa de la herencia simple. En este
programa, una clase de tringulo hereda la clase base, rect, como
resultado de la cual la instancia de la clase tringulo puede
acceder a las funciones miembro pblicas de la clase Rect (al lado
de sus propias funciones miembro).
inherit1.py
from __future__ import division
class rect:
def __init__(self):
self.l = 8
self.b = 5
def rectarea(self):
return self.l * self.b
class triangle(rect):
def __init__(self):
rect.__init__(self)
self.x = 17
self.y = 13
def trigarea(self):
return 1/2*self.x * self.y
r=triangle()
print ("Area of rectangle is ", r.rectarea())
print ("Area of triangle is ", r.trigarea())
Output:
Area of rectangle is 40
Area of triangle is 110.5
nota
Si tiene __ init__ en ambas clases, el mtodo de la clase base
__ init__ debe hacerse desde el mtodo __ init__ de la clase
derivada.
Este programa define una clase Rect que consiste en un __ init__ y
un mtodo rectArea(). Una clase ms, tringulo, se define en el
programa que se deriva de Rect. La clase tringulo formado por
metodos __ init__ y trigarea().
Se crea una instancia r de tringulo. Puesto que la clase tringulo
Multilevel Inheritance
herencia multinivel
Cuando una clase hereda de una clase que a su vez es heredado por
alguna otra clase, usted lo llama herencia multinivel, como se
muestra en la Figura 5.2.
class worker:
...
...
class officer(worker):
...
...
class manager(officer):
...
...
La clase de administrador hereda de la clase de oficiales, que es
una clase derivada de la clase trabajadora. En este escenario,
worker es la clase base, officer es una clase base intermedia, y el
manager es una clase derivada.
Administrador hereda las propiedades de officer directamente y las
propiedades de la clase worker indirectamente a travs de la clase
de officer. La clase de administrador puede tener acceso a los
miembros pblicos de la clase de officer, que a su vez pueden tener
acceso a los miembros pblicos de la clase worker.
Vamos a examinar el concepto a travs de un programa.
multilevel.py
History marks : 70
Geography marks : 60
Multiple Inheritance
herencia mltiple
Si una clase se deriva de ms de una clase base, usted lo llama
herencia mltiple, como se muestra en la Figura 5.3. Por lo general,
cuando se necesita para utilizar los miembros de dos o ms clases
(sin relacin) a travs de otra clase, que combina las
caractersticas de todas las clases heredando ellos.
{ ...
...
}
class officer
{ ...
...
}
class manager(worker,officer)
{ ...
...
}
Ya ves que, sin conexin entre ellos, las dos clases de bases,
trabajador y oficial, se heredan de la clase manager. Ahora
administrador puede tener acceso a los miembros pblicos de los
trabajadores, as como de oficiales.
nota
Todas las clases de base que han de ser heredado tienen que ser
separados por comas.
El siguiente programa explica la herencia mltiple. Dos clases, los
estudiantes y la ciencia, son heredadas por tercera clase,
resultados.
multiple.py
from __future__ import division
class student:
def __init__(self, r, n):
self.roll = r
self.name= n
def showstudent(self):
print ("Roll : ", self.roll)
print ("Name is ", self.name)
class science:
def __init__(self, p,c):
self.physics = p
self.chemistry=c
def showscience(self):
print ("Physics marks : ", self.physics)
print ("Chemistry marks : ", self.chemistry)
class results(student,science):
def __init__(self, r,n,p,c):
student.__init__(self,r,n)
science.__init__(self,p,c)
self.total = self.physics+self.chemistry
self.percentage=self.total/200*100
def showresults(self):
student.showstudent(self)
science.showscience(self)
print ("Total marks : ", self.total)
print ("Percentage marks : ", self.percentage)
s=results(101, 'David', 65, 75)
Two Base Classes Having a Method with the Same Name and
Signature
Dos clases de base que tiene un mtodo con el mismo nombre
y firma
Qu suceder si las dos clases que se derivan de una tercera clase
contiene un mtodo con la misma firma? Supongamos que hay dos
clases, A y B, que tienen un mtodo con el mismo nombre y la firma,
area(), y una tercera clase C hereda de ambos A y B. La instancia de
C tendr dos copias del mtodo rea(). Qu mtodode area() va a
ejecutar, el de A o el de B?
La respuesta es que se ejecutar el mtodo de la clase A. El
siguiente programa confirma que ser visitada el mtodo de la
primera clase, si dos clases tienen un procedimiento de la misma
firma en la herencia mltiple:
basefunc.py
from __future__ import division
class rect:
def __init__(self):
self.l = 8
self.b = 5
def area(self):
return self.l * self.b
class triangle:
def __init__(self):
self.x = 17
self.y = 13
def area(self):
return 1/2*self.x * self.y
class both(rect, triangle):
pass
r=both()
print ("Area of rectangle is ", r.area())
Output:
Area of rectangle is 40
Operator Overloading
sobrecarga de operadores
Para sobrecargar un operador estndar significa que usted solicita
operadores aritmticos para una instancia de clase para realizar las
operaciones deseadas. Puede sumar, restar, multiplicar y dividir los
casos utilizando los operadores estndar de la misma forma en que se
utilizan con los nmeros. Por ejemplo, el mtodo __ add__ se utiliza
para agregar instancias al igual que hace el operador de suma (+).
Cuando se utiliza un operador como +, Python llama al mtodo
especial __ add__ en el fondo. Todo lo que necesitas hacer es
implementar __ add__ para agregar dos instancias.
El siguiente programa, aade las instancias r1 y r2 de la clase rect
mediante el operador +:
operatorovr1.py
class rect:
def __init__(self, x,y):
self.l = x
self.b = y
def __str__(self):
Output:
The two instances are not equal
Polymorphism
polimorfismo
Poli significa muchos, y metamorfosis significa cambio. A travs de
polimorfismo, se puede tener un mtodo con el mismo nombre en
diferentes clases para realizar diferentes tareas. Usted puede
manejar objetos de diferentes tipos de la misma manera.
Para implementar el polimorfismo, se define un nmero de clases o
subclases que tienen el mtodo (s) con el mismo nombre. Estas clases
o subclases son polimrficos. Puede acceder a los mtodos
polimrficos sin saber que clase o subclase es incovado.
Por ejemplo, el porcentaje de comisin por la venta de un libro
puede ser diferente para un almacenero, un distribuidor y un
minorista. Se puede definir un mtodo de comisin() en tres clasesalmacenistas, distribuidores y minoristas, donde cada mtodo calcula
un porcentaje diferente de comisin.
En la ejecucin del programa, el mtodo respectiva comisin() se
llama en cada instancia. Este es un programa completo que muestra
polimorfismo.
polymorphism.py
class book:
def __init__(self,x):
self.price = x
class stockist(book):
def __init__(self,x):
book.__init__(self,x)
def commission(self):
self.comm=self.price*5/100
print ("Commission of Stockist is %.2f" %self.comm)
class distributor(book):
def __init__(self,x):
book.__init__(self,x)
def commission(self):
self.comm=self.price*8/100
print ("Commission of Distributor is %.2f" %self.comm)
class retailer(book):
def __init__(self,x):
book.__init__(self,x)
def commission(self):
self.comm=self.price*10/100
print ("Commission of Retailer is %.2f" %self.comm)
r = stockist(100)
s = distributor(100)
t = retailer(100)
prncomm = [r,s,t]
for c in prncomm:
c.commission()
Output:
Commission of Stockist is 5.00
Commission of Distributor is 8.00
Commission of Retailer is 10.0
Properties - Propiedades
Las propiedades se utilizan para administrar los atributos con
mtodos get / set. En versiones anteriores de Python, la gestin de
los atributos se hace reemplazando con metodos __ getattr__ y __
setattr__.
Para evitar la sobrecarga de anular estos dos mtodos, se utilizan
las propiedades. Se utiliza propiedades para redirigir conjunto de
un atributo, obtener, o incluso borrar la operacin a una funcin.
propertyex.py
class product(object):
def __init__(self, name):
self._name = name
def set_name(self, name):
print ('Setting product name: %s' % name)
self._name = name
def get_name(self):
return self._name
def del_name(self):
del self._name
name = property(get_name, set_name)
p = product('Camera')
print('Getting product name ', p.name)
p.name='Cell'
print('Getting product name ', p.name)
Output:
Getting product name Camera
Setting product name: Cell
Getting product name Cell
Descriptors Descriptor
Los descriptores son las clases que nos permiten gestionar instancia
atribuye de manera eficiente. Para administrar los atributos de
instancia, se utilizan tres mtodos: __ set__, __ get__ y __
delete__. Los descriptores son de dos tipos:
-Los datos no descriptor.-La clase que implementa slo el
mtodo __ get__ para un objeto se conoce como un descriptor no
datos.
-Descriptor de datos.- La clase que implementa los metodos __
delete__ y __ set__ as como el mtodo __ get__ para un objeto
que se conoce como un descriptor de datos.
Al acceder a un atributo de instancia, Python obtiene el valor del
atributo llamando __ get__ en el descriptor correspondiente. Del
mismo modo, cuando se asigna un valor a una instancia de atributo
con un descriptor correspondiente, el valor de ese atributo se
establece llamando __ set__ en el descriptor.
La sintaxis de los descriptores de codificacin es la siguiente:
class Descriptor:
getsetattr.py
class product:
price=25
def __init__(self, name):
self.name=name
def __setattr__(self,name,value):
self.__dict__[name]=value
def __getattr__(self,name):
return self.name
p=product('Camera')
print (p.price)
print (p.name)
p.price=15
p.name="Cell"
print (p.name)
print(p.price)
Output:
25
Camera
Cell
15
Una clase de producto se define mediante tres mtodos: __ init__, __
setattr__ , __getattr__. La clase contiene un atributo de clase,
precio, inicializado a 25. Se crea una instancia p de producto que
inicializa su variable de instancia nombre a la cmara.
A continuacin se accede a precio y name de los atributos de
instancia, lo que resulta en la invocacin __ getattr__. El mtodo
__ getattr__ devuelve el valor de la variable de instancia nombre.
Adems, el programa asigna los valores 15 y Cell al precio y nombre,
lo que resulta en __ setattr__ est invocando. En el mtodo __
setattr__, los valores se asignan a las variables de instancia
utilizando el diccionario para evitar las llamadas recursivas.
Summary -
resumen
La apertura de un archivo
Realizacin de acciones en el archivo (lectura, escritura,
actualizacin de los contenidos)
Cierre el archivo
For example:
f = open('xyz.txt', 'w')
proposito
close()
read([n])
readline([n])
readlines([n])
flush()
write(string)
writelines(list)
seek(offset,location)
desplazamiento especificado. La
ubicacin define si el
desplazamiento se refiere a la
posicin actual del controlador
de archivo, a partir del archivo,
o el final del archivo. El valor
predeterminado de la ubicacin es
0. Ejemplos: f.seek (0) mueve el
controlador de archivo al
principio del archivo. f.seek
(10, 1) se mueve el controlador
de archivo de 10 bytes a partir
de su posicin actual.Si el
desplazamiento offset es
negativo, el controlador de
archivo se mover hacia atrs
desde su posicin actual. f.seek
(10, 2) mueve el controlador de
archivo a la dcima de bytes
desde el final del archivo.
f.seek (0, 2) se mueve el
controlador de archivo en el byte
0 desde el final del archivo.
Esto posiciona el manejador de
archivo al final del archivo, por
lo que es posible anexar
contenidos en el fichero.
tell()
Para entender
programas. El
aboutbook.txt
escrito en el
pantalla.
createfile1.py
matter = '''Python is a great language
Easy to understand and learn
Supports object Oriented Programming
Also used in web development '''
f = open('aboutbook.txt', 'w')
f.write(matter)
f.close()
f = open('aboutbook.txt')
while True:
line = f.readline()
if len(line) == 0:
break
print (line,)
f.close()
Output:
Python is a great language
Easy to understand and learn
Supports Object Oriented Programming
Also used in web development
Method/Attribute
fileno()
isatty()
closed
mode
name
archivo.
import sys
f = open('aboutbook.txt', 'r')
lines = f.readlines()
f.close()
print('The contents in the file are:', lines)
print('\nThe contents in the file are:')
for line in lines:
sys.stdout.write(line)
print('\n\nThe contents in the file are:')
for i in range(0, len(lines)):
sys.stdout.write(lines[i])
Output:
The contents in the file are: ['Python is a great language\n', 'Easy to
understand and
learn\n', 'Supports Object Oriented Programming\n', 'Also used in web
development ']
The contents in the file are:
Python is a great language
Easy to understand and learn
Supports Object Oriented Programming
Also used in web development
The contents in the file are:
Python is a great language
Easy to understand and learn
Supports Object Oriented Programming
Also used in web development
un archivo
Output:
The content of the third line is: Supports Object Oriented Programming
10
Serialization(Pickling) - Serializacin(decapado)
Serializacin (tambin conocido como pickling - decapado) es un
proceso de conversin de datos estructurados en formato de flujo de
datos. A travs de la serializacin, estructuras como listas,
tuplas, funciones y clases se conservan utilizando caracteres ASCII
entre valores de datos. El formato de datos en serie est
estandarizada, por lo que las estructuras serializados con la
serializacin se pueden deserializar con cPickle y viceversa.
self.id = x
self.name = y
self.emailadd=z
def dispuser(self):
print('User ID:', self.id)
print('User Name:', self.name)
print('Email Address:', self.emailadd)
f = open('UsersInfo.bin', 'wb')
n=int(input('How many users? ' ))
print('Enter', n, 'numbers')
for i in range(0,n):
u=input('User ID: ')
n=input('User Name: ')
e=input('Email Address: ')
usrobj=user(u,n,e)
pickle.dump(usrobj,f)
f.close()
print('\nInformation of the users is:')
f = open('UsersInfo.bin','rb')
while True:
try:
usrobj = pickle.load(f)
except EOFError:
break
else:
usrobj.dispuser()
f.close()
Output:
How many users? 3
Enter 3 numbers
User ID: johny111
User Name: John
Email Address: johny@gmail.com
User ID: kelly222
User Name: Kelly
Email Address: kelly@hotmail.com
User ID: bintu333
User Name: Bintu
Email Address: bintu@yahoo.com
Information of the users is:
User ID: johny111
User Name: John
Email Address: johny@gmail.com
User ID: kelly222
User Name: Kelly
Email Address: kelly@hotmail.com
User ID: bintu333
User Name: Bintu
Exception Handling
Manejo de excepciones
Las excepciones se producen cuando ciertas situaciones surgen en un
programa. Por ejemplo, la divisin de un valor de 0, el acceso a un
elemento de la lista fuera de su rango de ndice, o la lectura de un
archivo que no existe, son situaciones que provocan excepciones.
Cuando se produce una excepcin, Python normalmente muestra un
mensaje tcnico que es un poco difcil de entender. Para hacerlo ms
fcil para un usuario para entender lo que sali mal y ofrecer una
oportunidad de corregir el error, puede capturar las excepciones
especficas y mostrar mensajes de uso fcil. Los errores de sintaxis
son diferentes de las excepciones en que los errores de sintaxis se
producen cuando cualquier declaracin no coincide con la gramtica
de la intrprete de Python. Falta de ortografa en una declaracin o
un parntesis o comilla faltante son todos los errores de sintaxis.
Para controlar las excepciones, se escribe el cdigo en un bloque
que comienza con la palabra try. Hay dos tipos de bloques try:
try/except: El cdigo que podra generar un error se escribe en
el bloque try, y todos los errores y las excepciones se manejan
a travs de la clusula de excepcin. La clusula except puede
manejar un solo error o excepcin especificada. Si no se
especifica ningn nombre de error o excepcin, salvo se
encargar de todos los errores y excepciones que aparecen en el
Exception
Description
AssertionError
AttributeError
EOFError
FloatingPointError
IOError
IndexError
KeyError
OSError
OverflowError
TypeError
ValueError
un valor de argumento
inapropiado.
ZeroDivisionError
import sys
try:
n = input('Enter your name ')
except EOFError:
print ('EOF error has occurred' )
sys.exit(1)
except:
print ('Some error has occurred' )
else:
print('The name entered is', n)
Output:
Enter your name
EOF error has occurred
Traceback (most recent call last):
File "D:\pythonprograms\tryelse.py", line 6, in <module>
sys.exit(1)
SystemExit:1
Enter your name John
The name entered is John
El programa siguiente muestra cmo se producen execpciones TypeError
y ZeroDivisionError y cmo se manejan. Recuerde que una excepcin
TypeError ocurre cuando se suministra un argumento de tipo
inadecuado, y una excepcin ZeroDivisionError ocurre cuando un
nmero se divide por 0.
try2.py
from __future__ import division
import sys
n = input('Enter a number ')
if n.isdigit():
n=int(n)
try:
m=15/n
except TypeError as ex:
print ('You have not entered a numeric value:', ex)
sys.exit(1)
except ZeroDivisionError as ex:
print ('You have entered zero value:', ex)
sys.exit(1)
print ('The result is', m)
Output:
Enter a number John
You have not entered a numeric value unsupported operand type(s) for /: 'int' and 'str'
excepcin o no:
filetryfinal.py
import sys
try:
f = open('aboutbook.txt', 'r')
try:
lines = f.read()
finally:
f.close()
except IOError:
print ('File aboutbook.txt does not exist')
sys.exit(1)
print (lines)
Output:
File aboutbook.txt does not exist
Traceback (most recent call last):
File "D:\pythonprograms\filertryfinal.py", line 11, in >module>
sys.exit(1)
SystemExit: 1
Este programa abre aboutbook.txt en modo de lectura en el bloque
try. Si una excepcin IOError se produce al abrir el archivo, a
continuacin, Archivo aboutbook.txt no existe en la pantalla,
seguido por salir de la aplicacin. Adems, las lneas del archivo
se leen a travs de read(), y si se produce una excepcin o no, el
archivo se cierra a travs del bloque finally.
Raising an Exception
Lanzar una excepcin
Las excepciones son lanzados de forma automtica cuando alguna
situacin no deseada se produce durante la ejecucin del programa.
Puede provocar una excepcin explcita a travs de la sentencia
raise en un bloque try/except.
Syntax:
raise customException, statement for customException
Al plantear una excepcin en un bloque try, el formato ser el
siguiente:
try:
if condition:
raise customException, statement for customException
except customException, e:
statements for customException
Enter quantity 5
No exception raised.
El programa crea una clase MyException que hereda de la clase
Exception. La clase contiene __ init__, que inicializa la variable
de instancia la cantidad de la clase y que llama al mtodo __ init__
de la superclase, Excepcin. Se le pide al usuario que introduzca la
cantidad de un artculo que se asigna a la variable s. Si el valor
introducido es inferior a cero, el excepcin personalizada
MyException se eleva, la invocacin de la clase y pasar el valor de
la cantidad a la misma. Si el usuario presiona Ctrl + D en lugar de
proporcionar un valor para la cantidad, se produce una excepcin
EOFError, mostrando Ha pulsado EOF. Cuando se eleva MyException,
MyException: La cantidad introducida es _, debe ser que aparezca
algn valor positivo. Si la excepcin no es lanzada , se ejecuta la
sentencia en el bloque de los dems, mostrando ninguna excepcin
lanzada.
The program creates a myException class that inherits from the Exception class. The class
contains __init__, which initializes the quantity instance variable of the class and that
calls the __init__ method of the super class, Exception. The user is asked to enter the
quantity of an item that is assigned to variable s. If the value entered is less than zero, the
custom exception myException is raised, invoking the class and passing the value of
quantity to it. If the user presses Ctrl+D instead of providing a value for quantity, an
EOFError exception is raised, displaying You pressed EOF. When myException is raised,
myException: The quantity entered is _, it must be some positive value is
displayed. If no exception is raised, the statement in the else block will be executed,
Summary
En este captulo usted aprendi a realizar diferentes operaciones en
los archivos. Usted aprendi a abrir un archivo en diferentes modos
y para leer su contenido, actualizar el contenido existente, borrar
el contenido, y aadir nuevo contenido. Tambin vio cmo copiar un
archivo, leer un archivo secuencialmente o al azar, y slo lectura
de contenido especfico. Tambin ha aprendido a crear un archivo
binario y de pickle y objetos unpickle. Por ltimo, ha aprendido
para implementar el control de excepciones y el procedimiento de
elevar excepciones.
En el prximo captulo usted aprender a desarrollar aplicaciones
GUI en Python a travs de PyQt. Usted aprender a instalar y
utilizar PyQt Qt Designer para desarrollar Aplicaciones GUI.
Chapter 7. PyQt
En el captulo anterior usted aprendi sobre el manejo de archivos.
Usted aprendi a abrir un archivo en diferentes modos, leer su
contenido, actualizar el contenido existente, borrar el contenido,
aadir nuevos contenidos, y hacer una copia. Usted aprendi a leer
Qt Toolkit
Toolkit Qt, conocido simplemente como Qt, es una aplicacin multiplataforma y un marco de interfaz de usuario desarrollado por
Trolltech que se utiliza para el desarrollo de aplicaciones GUI. Se
ejecuta en varias plataformas, incluyendo Windows, Mac OS X, Linux y
otras plataformas UNIX. Tambin se le conoce como un conjunto de
herramientas Widget porque proporciona widgets, como botones,
etiquetas, cuadros de texto, botones y cuadros de lista, que son
necesarios en el diseo de una interfaz grfica de usuario. lo
incluye un conjunto de plataformas cruzadas de las clases, las
herramientas de desarrollo integradas y un IDE multiplataforma.
PyQt
PyQt es un conjunto de enlaces Python para el conjunto de
herramientas Qt. PyQt combina todas las ventajas de Qt y Python. Con
PyQt, puede incluir libreras Qt en el cdigo Python, lo que le
permite escribir aplicaciones grficas en Python. En otras palabras,
PyQt le permite acceder a todos los servicios proporcionados por Qt
a travs del cdigo Python. Desde PyQt necesita las libreras Qt
Installing PyQt
You need to have Python Interpreter installed on your system before
you install PyQt. Recall from Chapter 1, Python and its Features,
that you have already installed Python 3.2 on your system, so you
can go ahead and download PyQt from
http://www.riverbankcomputing.co.uk/software/pyqt/download. The
latest version at the time of this writing is PyQt version 4.8.5 for
Python 3.2. The name of the downloaded file is PyQt-Py3.2-x86-gpl4.8.5-1.exe. Just double-click the downloaded file to begin
installation. The first screen that you see is a welcome screen to
the PyQt Setup Wizard, as shown in Figure 7.1. The screen displays
general information about the components that come with PyQt. Select
Next to move forward.
Note
Your operating system may complain, saying the program is from
an unknown publisher and may harm your computer. Select the Yes
button to proceed with the installation. If you dont see a Yes
button, select Actions to see the list of possible actions. In the
dialog that appears, select the More Options drop-down and select
Run to begin with the installation procedure.
The next screen shows the License Agreement, which you need to read
Lets go ahead with Full Installation and select Next to move on.
The next screen will prompt you to specify the name and location of
the folder where Python 3.2 is installed. The reason is that PyQt is
installed in the sitepackages folder of the Python installation. The
wizard auto-detects and shows the location of the Python
installation by default, as shown in Figure 7.3. You can also select
Browse to modify the folder name. After specifying the location of
the Python installation, select Install to begin copying and
installing the PyQt files.
When PyQt files are copied and installed, you will be prompted to
select Finish to close the wizard.
Note
Dont forget to set the path of the PyQt folder so that you can
access it from any folder on your computer.
1. import sys
2. from PyQt4 import QtGui, QtCore
3. class demowind(QtGui.QWidget):
4.
def __init__(self, parent=None):
5.
QtGui.QWidget.__init__(self, parent)
6.
self.setGeometry(300, 300, 200, 200)
7.
self.setWindowTitle('Demo window')
8.
quit = QtGui.QPushButton('Close', self)
9.
quit.setGeometry(10, 10, 70, 40)
10.
self.connect(quit, QtCore.SIGNAL('clicked()'), QtGui.qApp,
QtCore.SLOT('quit()'))
11. app = QtGui.QApplication(sys.argv)
12. dw = demowind()
13. dw.show()
14. sys.exit(app.exec_())
en pyscriter:
probando:
nota
Al crear una aplicacin GUI, es necesario especificar un widget de
nivel superior, que suele ser QDialog, Qwidget o QmainWindow. Si
crea una aplicacin basada en la plantilla de Dilogo, el widget de
nivel superior o la primera clase que se hereda es QDialog. Del
mismo modo, si la solicitud se basa en la plantilla de la ventana
principal, el widget de nivel superior ser QmainWindow, y si se
utiliza la plantilla Widget para su aplicacin, el widget de nivel
superior ser QWidget. Los widgets que utiliza para la interfaz de
usuario se tratan como widgets hijos de las clases.
Qt Designer muestra una barra de men y barra de herramientas en la
parte superior. Muestra un cuadro del widget en su izquierda que
contiene una variedad de widgets que se utilizan para desarrollar
aplicaciones, agrupados por secciones. Todo lo que tienes que hacer
es arrastrar y soltar los widgets que desee en el formulario.
Puede organizar los widgets en los diseos, puesto su apariencia,
probando:
Layouts - presentaciones
Spacers - espaciadores
Buttons - botones
Item Views (Model-Based)- Articulos Vistas(basado en modelos)
Item Widgets (Item-Based)
Containers - contenedores
Input Widgets
Display Widgets
Phonon
Layouts
Description
Vertical Layout
(QVBoxLayout)
Horizontal Layout
(QHBoxLayout)
Spacers
Description
Horizontal Spacer
(Spacer)
Vertical Spacer
(Spacer)
Buttons
Widget
Description
Radio Button
(QRadioButton)
Button Box
(QDialogButtonBox)
Widget
Description
Tree View
(QTreeView)
Table View
(QTableView
Column View
(QColumnView)
Tree Widget
(QTreeWidget)
Table Widget
(QTableWidget)
Containers
Description
Frame (QFrame)
Widget (QWidget)
MdiArea (QMdiArea)
Input Widgets
Widget
Description
Date/Time Edit
(QDateTimeEdit)
Dial (QDial)
Vertical Scrollbar
(QScrollBar)
QsciScintilla
Scintilla es un componente de
Display Widgets
Label (QLabel)
Text Browser
(QTextBrowser)
Graphics View
(QGraphicsView)
Calendar
(QCalenderWidget)
Progress Bar
(QProgressBar)
QDeclarativeView
QWebView
Phonon
Description
Phonon::VideoPlayer
Phonon::SeekSlider
Phonon::VolumeSlide
Toolbar
En la parte superior de Qt Designer es una barra de herramientas con
iconos como se muestra en la Figura 7.8.
Figure 7.8. Qt Designer toolbar.
Displaying Text
Para mostrar texto no editable o una imagen, se utilizan widgets de
etiquetas; Una etiqueta es una instancia de la clase QLabel. Un
widget Label es un widget muy popular para la visualizacin de
mensajes y la informacin al usuario. Los mtodos proporcionados por
la clase QLabel se muestran en la Tabla 7.10.
Tabla 7.10. Mtodos proporcionados por la clase Qlabel
Methods
Usage
setText()
setPixmap()
setNum()
clear()
Usage
setEchoMode()
maxLength()
setText()
text()
clear()
setReadOnly()
isReadOnly()
lectura.
setEnabled()
setFocus()
Las seales emitidas por el widget Line Edit son los siguientes:
TextChanged(): La seal se emite cuando se cambia el texto en el
widget Line Edit.
returnPressed(): La seal se emite cuando se pulsa Return o Enter.
editingFinished (): La seal se emite cuando el foco se pierde en el
widget Line Edit, lo que confirma la tarea de edicin ha terminado
en l.
El siguiente widget es la forma ms comn de iniciar acciones en
cualquier aplicacin.
Displaying Buttons
Viendo Botones
Para mostrar botones (normalmente Botones de comando) en una
aplicacin, es necesario crear una instancia de la clase
QpushButton. Al asignar texto a los botones, puede crear teclas de
acceso directo precediendo cualquier carcter en el texto con un
smbolo de unin. Por ejemplo, si el texto asignado a un pulsador es
&Click Me, se subray el carcter C para indicar que se trata de una
tecla de acceso, y el usuario puede seleccionar el botn pulsando
Alt + C. El botn emite una seal clicked() si se activ.
Adems de texto, un icono tambin se puede mostrar en el pulsadorpushbutton. Los mtodos para la visualizacin de texto y un icono de
un botn son estas:
setText(): Se utiliza para asignar el texto al pulsador.
setIcon(): Se utiliza para asignar icono para el botn.
El nico concepto dej de examinar antes de comenzar con su primera
aplicacin en QtDesigner es la gestin de eventos. Vamos a ver cmo
los eventos se manejan en PyQt.
En pratica:
nota
Para una vista previa de un formulario durante la edicin,
seleccione el Formulario, Vista previa o Ctrl + R.
Quieres un poco de accin a pasar cuando el usuario selecciona
Borrar en el formulario, por lo que necesita para conectar la seal
de empuje de Button al slots de la lnea de edicin.
texto en el widget Line Editar para ser eliminado. Para que esto
suceda, usted tiene que conectar la seal clicked() del botton al
slot clear() de la lnea de edicin. As, en el cuadro de dilogo
Configurar conexin, seleccione la seal clicked () de la columna de
PushButton y el slot clear() de la columna de la lnea de edicin y
seleccione Aceptar. En el formulario, ver que aparece una flecha,
lo que representa la conexin de la seal-slot entre las dos
widgets, como se muestra en la figura 7.13.
Figure 7.13. The signal-slot connection in widgets represented with
arrows.
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>pushButton</sender>
<signal>clicked()</signal>
<receiver>lineEdit</receiver>
<slot>clear()</slot>
<hints>
<hint type="sourcelabel">
<x>193</x>
<y>196</y>
</hint>
<hint type="destinationlabel">
<x>208</x>
<y>82</y>
</hint>
</hints>
</connection>
</connections>
</ui>
Para utilizar el archivo, primero debe convertirlo en script Python.
La utilidad del sistema que va a utilizar para convertir un archivo
de ui. En un script de Python es pyuic4.
En Windows, la utilidad pyuic4 se la con PyQt. Para realizar la
conversin, usted necesita abrir una ventana de smbolo del sistema
y navegue a la carpeta donde est guardado el archivo y ejecuta la
orden:
C:\Python32\Lib\site-packages\PyQt4>pyuic4 FirstApp.ui -o FirstApp.py
QtCore.QMetaObject.connectSlotsByName(Dialog)