Uploaded by Lobo Estepario Archivo

T4 Introducción al lenguaje de programación Python 21 22

advertisement
INTRODUCCIÓN AL LENGUAJE DE
PROGRAMACIÓN PYTHON
¿Qué es Python?
Python es un lenguaje de programación de alto nivel multiparadigma y de propósito general creado por
Guido van Rossum en 1990.
Actualmente el lenguaje lo desarrollan y mantiene la “Python Software Foundation” (www.python.org)
• Es de código abierto (certificado por la OSI).
• Es interpretable y compilable.
• Es fácil de aprender gracias a que su sintaxis es bastante legible para los humanos.
• Es fácilmente extensible e integrable en otros lenguajes (C, java).
• Mantenido por una gran comunidad de desarrolladores y hay multitud de recursos para su aprendizaje.
•
Permite 3 modos o estilos de programación (paradigmas):
Programación imperativa
Conjunto de instrucciones que se ejecutan una tras otra (pasos de ejecución) de forma secuencial.
En la ejecución de estas instrucciones se van cambiando los valores de las variables y, dependiendo de estos
valores, se modifica el flujo de control de la ejecución del programa.
n=int(input("Número: "))
factorial=1
while n>1:
factorial=factorial*n
n=n-1
print("Factorial=",factorial)
Programación funcional
El código es una secuencia de declaración de funciones.
No existen asignación de variables, las funciones se llaman entre ellas y las repeticiones de instrucciones se
sustituyen por recursividad (cuando una función se llama a si misma).
def doble(x):
return x+x
def triple(x):
return doble(x)+x
def factorial(n):
if n>1:
return n*factorial(n-1)
else:
return 1
Programación orientada a objetos
El código se organiza en unidades denominadas clases, de las cuales se crean objetos que se relacionan entre
sí para conseguir un objetivo.
Forma de programación más cercana a la realidad donde cada elemento persona/cosa (objetos) con sus
características que lo identifica (atributos) son capaces de realizar determinadas acciones (métodos).
1
class Persona:
nombre = "Pedro"
def saludo(self):
print("hola",self.nombre)
return
def cambiaNombre(self,nuevo):
self.nombre = nuevo
return
hombre = Persona()
hombre.saludo()
hombre.cambiaNombre("Alejandro")
hombre.saludo()
Modos de ejecución
Interpretado en la consola de Python
Se ejecuta la instrucción que introduce el usuario de manera interactiva.
Interpretado en fichero
Se leen y se ejecutan una a una todas las instrucciones del fichero.
TIPOS DE DATOS
DATOS PRIMITIVOS SIMPLES
• Números (numbers) : 0 , ‑1 , 3.1415
• Cadenas (strings) : 'Hola' , "Adiós"
• Booleanos (boolean) : True , False
Estos datos son inmutables, es decir, su valor es constante y no puede cambiar.
La clase a la que pertenece un dato se obtiene con la función type().
Números (clases int y float)
Secuencia de dígitos que representan números.
Pueden incluir el ‑ para negativos, el . para decimales y la e para expresar potencias de 10 en notación
científica.
Pueden ser enteros (clase int) o reales (clase float).
>>> type(1)
<class 'int'>
>>> type(-1)
<class 'int'>
>>> type(2.3)
<class'float'>
>>> type(4e5)
<class 'float'
2
Operadores aritméticos con números
+ (suma)
- (resta)
* (producto)
/ (cociente)
//
%
**
(cociente división entera)
(resto división entera)
(potencia)
Orden de prioridad de evaluación:
Funciones predefinidas > Potencias > Productos y cocientes > Sumas y restas
Se puede saltar el orden de evaluación utilizando paréntesis ( ).
>>> 2+3
5
>>> 5*-2
-10
>>> 5/2
2.5
>>> 5//2
2
>>> 5%2
1
>>> (2+3)**2
25
Operadores lógicos con números
Devuelven un valor lógico o booleano True/False:
==
(igual que)
<
(menor que)
<=
(menor o igual que)
>>> 3==3
True
>
>=
!=
>>> 3.1<=3
False
(mayor que)
(mayor o igual que)
(distinto de)
>>> -1!=1
True
Cadenas (clase str)
Secuencia de caracteres alfanuméricos que representan un texto. Se escriben entre comillas sencillas ' o
dobles ".
'Python'
"123"
'True'
'A'
# Cadena vacía
''
# Cadena con un espacio
' '
# Cambio de línea
'\n'
# Tabulador
'\t'
Acceso a los elementos de una cadena
Cada carácter tiene asociado un índice que permite acceder a él.
Cadena
Índice positivo
Índice negativo
P
y
t
h
o
n
0
1
2
3
4
5
-6 -5 -4 -3 -2 -1
• c[i] devuelve el carácter de la cadena c con el índice i. El índice del primer carácter de la cadena = 0.
• Se pueden utilizar índices negativos para recorrer la cadena del final al principio. El índice del último
carácter de la cadena = ‑1.
• c[i:j] : Devuelve la subcadena de c desde el carácter con el índice i hasta el carácter con el índice j-1.
• c[i:j:k] : Devuelve la subcadena de c desde el carácter con el índice i hasta el carácter con el índice j-1
con saltos de k caracteres.
>>> 'Python'[2]
't'
>>> 'Python'[-1]
'n'
>>> 'Python'[-6]
'P'
>>> 'Python'[6]
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
IndexError: string index out of rango
>>> 'Python'[1:4]
'yth'
>>> 'Python'[2:]
'thon'
>>> 'Python'[:-2]
'Pyth'
>>> 'Python'[:]
'Python'
>>> 'Python'[0:6:2]
'Pto'
3
Operaciones con cadenas
•
•
•
•
c1 + c2 : Devuelve la cadena resultado de concatenar las cadenas c1 y c2.
c * n : Devuelve la cadena resultado de concatenar n copias de la cadena c.
c1 in c2 : Devuelve True si c1 es una cadena contenida en c2 y False en caso contrario.
c1 not in c2 : Devuelve True si c1 es una cadena no contenida en c2 y False en caso contrario.
>>> 'Me gusta '+'Python'
'Me gusta Python'
>>> 'Python'*3
'PythonPythonPython'
>>> 'y' in 'Python'
True
>>> 'Tho' not in 'Python'
True
Operaciones de comparación de cadenas
• c1 == c2 : Devuelve True si la cadena c1 es igual que la cadena c2 y False en caso contrario. Distingue
entre mayúsculas y minúsculas.
• c1 > c2 : Devuelve True si la cadena c1 sucede a la cadena c2 y False en caso contrario.
• c1 < c2 : Devuelve True si la cadena c1 antecede a la cadena c2 y False en caso contrario.
• c1 >= c2 : Devuelve True si la cadena c1 sucede o es igual a la cadena c2 y False en caso contrario.
• c1 <= c2 : Devuelve True si la cadena c1 antecede o es igual a la cadena c2 y False en caso contrario.
• c1 != c2 : Devuelve True si la cadena c1 es distinta de la cadena c2 y False en caso contrario.
Utilizan el orden establecido en el código ASCII.
>>> 'Python' == 'python'
False
>>> 'Python' < 'python'
True
>>> 'a' > 'Z'
True
>>> 'A' >= 'Z'
False
>>> '' < 'Python'
True
4
Funciones de cadenas
len(c) : Devuelve el número de caracteres de la cadena c.
min(c) : Devuelve el carácter menor de la cadena c.
max(c) : Devuelve el carácter mayor de la cadena c.
c.upper() : Devuelve la cadena con los mismos caracteres que la cadena c pero en mayúsculas.
c.lower() : Devuelve la cadena con los mismos caracteres que la cadena c pero en minúsculas.
c.title() : Devuelve la cadena con los mismos caracteres que la cadena c con el primer carácter en
mayúsculas y el resto en minúsculas.
• c.find(subcadena) : Busca subcadena en la cadena c. Devuelve la posición en la cadena c del primer
carácter de la subcadena . Si no la encuentra devuelve -1.
• c.replace(c1,c2) : Devuelve la cadena reemplazando las subcadenas c1 por c2.
• c.split(delimitador) : Devuelve la lista formada por las subcadenas que resultan de partir la cadena
c usando como delimitador la cadena delimitador. Si no se especifica el delimitador utiliza por defecto el
espacio en blanco.
•
•
•
•
•
•
>>> len('Python')
6
>>> min('Python')
'P'
>>> max('Python')
'y'
>>> 'Python'.upper()
'PYTHON'
>>> 'A,B,C'.split(',')
['A', 'B', 'C']
>>> 'I love Python'.split()
['I', 'love', 'Python']
Cadenas formateadas
• f 'c' : la cadena ‘f’ es un tipo de cadena que permite insertar en ellas números o cadenas de caracteres.
Se utilizan las llaves {} (marcadores de posición) para señalar el lugar de inserción y dentro de ellas se
indica el dato d a insertar, el espacio reservado n, la alineación del dato dentro del espacio reservado (<
izquierda, ^ centro y > derecha) y el número de decimales m para datos de tipo float.
Sintaxis de los marcadores de posición:
{d} : Inserta el dato completo sin espacio adicional.
{d:n} : Reserva n caracteres e inserta el dato alineado izquierda (cadenas) y derecha (números).
{d:<n} : Reserva n caracteres e inserta el dato (entero/real/cadena) alineado izquierda.
{d:^n} : Reserva n caracteres e inserta el dato (entero/real/cadena) alineado centro.
{d:>n} : Reserva n caracteres e inserta el dato (entero/real/cadena) alineado derecha.
{d:n.mf} : Reserva n caracteres e inserta el número real con m cifras decimales alineado derecha.
{d:<n.mf} : Reserva n caracteres e inserta el número real con m cifras decimales alineado izquierda.
{d:^n.mf} : Reserva n caracteres e inserta el número real con m cifras decimales alineado centro.
{d:>n.mf} : Reserva n caracteres e inserta el número real con m cifras decimales alineado derecha
>>> f'Texto {45} Texto'
'Texto 45 Texto'
>>> f'Texto {45:6} Texto'
'Texto
45 Texto'
>>> f'Texto {45:>6} Texto'
'Texto
45 Texto'
>>> f'Texto {45:^6} Texto'
'Texto
45
Texto'
>>> f'Texto {45:<6} Texto'
'Texto 45
Texto'
>>> f'Texto {3.1416:6.2f} Texto'
'Texto
3.14 Texto'
>>> f'Texto {3.1416:<6.2f} Texto'
'Texto 3.14
Texto'
>>> f'Texto {"Hola":^6} Texto'
'Texto Hola Texto'
>>> f"Texto {'Hola':^6} Texto"
'Texto Hola Texto'
>>> f'Texto {'Hola':^6} Texto'
SyntaxError: f-string: expecting '}'
5
Datos lógicos o booleanos (clase bool)
Contiene únicamente dos elementos True y False que representan los valores lógicos verdadero y falso
respectivamente.
False tiene asociado el valor 0 y True tiene asociado el valor 1.
Operaciones con valores lógicos
Operadores lógicos:
==
(igual que)
>
(mayor)
<
(menor)
>=
(mayor o igual)
<=
(menor o igual)
!=
(distinto de)
not b (negación) : Devuelve True si el dato booleano b es False y False en caso contrario.
b1 and b2 : Devuelve True si los datos booleanos b1 y b2 son True y False en caso contrario.
b1 or b2 : Devuelve True si alguno de los datos booleanos b1 o b2 son True, y False en caso contrario.
x
False
False
True
True
>>> not True
False
>>> False or True
True
y
False
True
False
True
Tabla de verdad
not x
x and y
True
False
True
False
False
False
False
True
>>> True and False
False
>>> True and True
True
x or y
False
True
True
True
>>> True > False
True
>>> True != False
True
Conversión de datos primitivos simples
Las siguientes funciones convierten un dato de un tipo en otro, siempre y cuando la conversión sea posible.
• int() convierte a entero.
• float() convierte a real.
• str() convierte a cadena.
• bool() convierte a lógico.
>>> int(2.3)
2
>>> int('12')
12
>>> int(True)
1
>>> float(3)
3.0
>>> float('3.4')
3.4
>>> float(True)
1.0
>>> str(3)
'3'
>>> str(3.14)
'3.14'
>>> str(True)
'True'
>>> bool(0)
False
>>> bool('')
False
>>> bool('Hola')
True
6
DATOS PRIMITIVOS COMPUESTOS (CONTENEDORES)
Listas (clase list)
Una lista es una secuencias ordenadas de objetos de distintos tipos.
Se construyen poniendo los elementos entre corchetes [ ] separados por comas.
[ objeto1 , objeto2 , … , objetoN ]
Se caracterizan por:
• Tienen orden.
• Pueden contener elementos de distintos tipos.
• Son mutables, es decir, pueden alterarse durante la ejecución de un programa.
list(c) : Crea una lista con los elementos de la secuencia o colección c. Se pueden indicar los elementos
separados por comas, mediante una cadena, o mediante una colección de elementos iterable.
# Lista vacía
>>> type([])
<class 'list'>
# Lista con elementos de distintos tipos
>>> [1, "dos", True]
# Listas anidadas
>>> [1, [2, 3], 4]
>>> list()
[]
>>> list(1, 2, 3)
[1, 2, 3]
>>> list("Python")
['P', 'y', 't', 'h', 'o', 'n']
Acceso a los elementos de una lista
Se utilizan los mismos operadores de acceso que para cadenas de caracteres.
lista[i] : Devuelve el elemento de lista con el índice i. El índice del primer elemento de lista es 0.
lista[i:j] : Devuelve la sublista desde el elemento con el índice i hasta el elemento con índice j-1.
lista[i:j:k] : Devuelve la sublista desde el elemento i hasta el elemento j-1, tomando elementos cada k.
Operaciones que no modifican una lista
print(*lista) : Imprime los elementos de una lista
len(lista) : Devuelve el número de elementos de lista.
min(lista) : Devuelve el mínimo elemento de lista (siempre que los datos sean comparables).
max(lista) : Devuelve el máximo elemento de lista (siempre que los datos sean comparables).
sum(lista) : Devuelve la suma de los elementos de lista (siempre que los datos se puedan sumar).
dato in lista : Devuelve True si el dato pertenece a lista y False en caso contrario.
lista.index(dato) : Devuelve la posición que ocupa en lista el primer elemento con valor dato.
lista.count(dato) : Devuelve el número de veces que el valor dato está contenido en lista.
all(lista) : Devuelve True si todos los elementos de lista son True y False en caso contrario.
any(lista) : Devuelve True si algún elemento de lista es True y False en caso contrario.
>>>
>>>
4
>>>
1
>>>
3
a = [1, 2, 2, 3]
len(a)
min(a)
max(a)
>>> sum(a)
8
>>> 3 in a
True
>>> a.index(2)
1
>>> a.count(2)
2
>>> all(a)
True
>>> any([0, False, 3<2])
False
Operaciones que modifican una lista
lista1 + lista2 : Crea una nueva lista concatenando los elementos de lista1 y lista2.
lista.append(dato) : Añade dato al final de lista.
7
lista.insert(índice, dato) : Inserta dato en la posición índice de lista y desplaza los elementos una
posición a partir de la posición índice.
lista.remove(dato) : Elimina el primer elemento con valor dato de lista y desplaza los que están por
detrás de él una posición hacia delante.
lista.pop([índice]) : Devuelve el dato en la posición índice y lo elimina de lista, desplazando los
elementos por detrás de él una posición hacia delante.
lista.sort() : Ordena los elementos de lista de acuerdo al orden predefinido, siempre que los elementos
sean comparables.
lista.reverse() : invierte el orden de los elementos de lista.
>>>
>>>
>>>
[1,
>>>
>>>
[1,
a = [1, 3]
b = [2, 4, 6]
a + b
3, 2, 4, 6]
a.append(5)
a
3, 5]
>>>
>>>
[1,
>>>
>>>
[1,
a.extend([8, 9])
a
3, 5, 8, 9]
a.insert(2,9)
a
3, 9, 5, 8, 9]
>>>
>>>
[1,
>>>
8
>>>
[1,
a.remove(3)
a
9, 5, 8, 9]
a.pop(3)
a
9, 5, 9]
>>>
>>>
[1,
>>>
>>>
[9,
a.sort()
a
5, 9, 9]
a.reverse()
a
9, 5, 1]
Copia de listas
Existen dos formas de copiar listas:
• Copia por referencia lista1 = lista2 : Asocia la variable lista1 la misma lista que tiene asociada
la variable lista2, ambas variables apuntan a la misma dirección de memoria. Cualquier cambio que
hagamos a través de lista1 o lista2 afectará a la misma lista.
• Copia por valor lista1 = list(lista2) : Crea una copia de lista2 en una dirección de memoria
diferente y se la asocia a lista1. Las variables apuntan a direcciones de memoria diferentes que contienen
los mismos datos. Cualquier cambio que hagamos a través de lista1 no afectará a lista2 y viceversa.
# copia por referencia
>>> a = [1, 2, 3]
>>> b = a
>>> b.remove(2)
>>> a
[1, 3]
>>> b
[1, 3]
# copia por valor
>>> a = [1, 2, 3]
>>> b = list(a)
>>> b.remove(2)
>>> a
[1, 2, 3]
>>> b
[1, 3]
Rangos (clase range)
Los datos de tipo rango representan una secuencia inmutable de números enteros en sucesión aritmética (la
diferencia entre dos términos consecutivos es siempre la misma)
range(n) : secuencia creciente de n números enteros consecutivos que empieza en 0 y acaba en n-1.
range(m,n) : secuencia creciente de enteros consecutivos que empieza en m y acaba en n-1.
range(m,n,p) : secuencia de enteros que empieza en m y acaba justo antes de superar o igualar a n,
aumentando los valores de p en p. Si p negativo, la secuencia será decreciente.
>>>
[0,
>>>
[4,
list(range(4))
1, 2, 3]
list(range(4,8))
5, 6, 7]
>>> list(range(4,10,2))
[4, 6, 8]
>>> list(range(-3))
[]
>>> list(range(8,4))
[]
>>> list(range(8,4,-1))
[8, 7, 6, 5]
8
VARIABLES
Una variable es el nombre que se utiliza para referirse a un objeto que reside en la memoria.
Cada variable debe tener un nombre único llamado identificador.
A diferencia de otros lenguajes no tienen asociado un tipo y no es necesario declararlas antes de usarlas
(tipado dinámico).
El nombre de la variable debe respetar las siguientes reglas:
• Comienzar siempre por una letra, seguida de otras letras o números.
• No utilizar palabras reservadas del lenguaje: False None True __peg_parser__ and as assert async
await break class continue def del elif else except finally for from global if import in is lambda
nonlocal not or pass raise return try while with yield.
Para asignar un valor a una variable se utiliza el operador =. Este operador permite asignar valores a mas de
una variable con una sola instrucción (asignación múltiple).
Para ver la dirección de memoria a la que apunta la variable (donde se encuentra el objeto) se utiliza la
instrucción id(variable).
Para borrar una variable se utiliza la instrucción del().
>>> lenguaje = 'Python'
>>> id(lenguaje)
1741243188528
>>> x = 3.14
>>> y = 3 + 2
>>>
>>>
>>>
>>>
>>>
>>>
a1,a2 = 1,2 # Asignación múltiple
a,b = b,a
# Intercambio de valores
x += 2
# Incremento (equivale a x=x+2)
x -= 1
# Decremento (equivale a x=x-1)
x = None # Valor no definido
del(x)
Por economía del lenguaje, nos tomaremos la licencia de hablar de "guardar un valor en una variable" en vez
de "guardar el valor en un objeto y asociar una variable al objeto".
ENTRADA Y SALIDA
ENTRADA POR TECLADO
Para asignar a una variable un valor introducido por teclado por el usuario se utiliza la instrucción:
• input(mensaje) : Muestra la cadena mensaje por la terminal y devuelve una cadena con la entrada del
usuario. El valor devuelto siempre es una cadena, incluso si el usuario introduce un dato numérico.
Al ejecutarse esta función, el programa se detiene esperando que se escriba algo y se pulse la tecla INTRO .
Posteriormente, se utilizarán las funciones de conversión de tipo para transformar la cadena en el tipo de
dato deseado.
>>> nombre = input('Introduce nombre: ')
Introduce nombre: Pepe
>>> nombre
'Pepe'
>>> entrada = input('Introduce edad: ')
Introduce edad: 45
>>> entrada
'45'
>>> edad = int(entrada)
>>> edad
45
>>> edad = int(input('Introduce edad: '))
Introduce edad: 45
>>> edad
45
9
SALIDA POR PANTALLA
Para mostrar un dato por la terminal se utiliza la instrucción:
• print(dato1, ... , sep=' ', end='\n') :
dato1, ... : son los datos a imprimir y pueden indicarse tantos como se quieran separados por comas.
sep : establece el separador entre los datos, que por defecto es un espacio en blanco ' '.
end : indica la cadena final de la impresión, que por defecto es un salto de línea \n.
• print(*contenedor, ... , sep=' ', end='\n') : imprime todos los elementos del contenedor
(cadena de caracteres, lista, etc.).
>>> nombre = input('Teclea tu nombre: ')
Teclea tu nombre: Pepe
>>> print('Mi nombre es',nombre)
Mi nombre es Pepe
>>> print('Mi nombre es',nombre,sep='')
Mi nombre esPepe
>>> print('Mi nombre es',nombre,sep='\n')
Mi nombre es
Pepe>>> print('Mi nombre es',nombre,end='*')
Mi nombre es Pepe*
>>> print(f'Mi nombre es {nombre:^10}.')
Mi nombre es
Pepe
>>> lista=[1,'hola',2]
>>> print(*lista , sep='-',end='*')
1-hola-2*
>>> cadena='hola'
>>> print(*cadena , sep='-')
h-o-l-a
Ejercicio 1 : Se desea invertir capital en un banco. Cuanto dinero ganará al mes si el interés es el 2%
mensual?
Inicio inversion
leer capital
gana=capital*0.02
escribir gana
fin
entrada = input('Capital= ')
capital = float(entrada)
gana = capital * 0.02
print('Gana=',gana,'euros')
Capital= 100
Gana= 2.0 euros
Ejercicio 2 : Un vendedor recibe sueldo base y 10% de comisión de sus ventas. ¿Cuánto dinero
obtiene de comisiones por 3 ventas mensuales? ¿Cuál es el sueldo total (base y comisiones)?
Inicio Salario
leer sb,v1,v2,v3
tot_vta=v1+v2+v3
com=tot_vta*0.10
tpag=sb+com
escribir tpag,com
fin
salario_base = float(input("Salario base= "))
ventas_1 = float(input("Ventas_1= "))
ventas_2 = float(input("Ventas_2= "))
ventas_3 = float(input("Ventas_3= "))
total_venta = ventas_1 + ventas_2 + ventas_3
comisiones = total_venta * 0.1
# 10%
total_pagado = salario_base + comisiones
print(f'Sueldo = {total_pagado:.2f}€')
Salario base= 1000
Ventas_1= 250
Ventas_2= 500
Ventas_3= 1250
Sueldo = 1200.00€
Ejercicio 3 : Sabiendo el diámetro, calcular la circunferencia y superficie de un círculo.
Ejercicio 4 : Dados 2 números enteros distintos de cero, calcular el cuadrado de cada uno, su suma,
resta, multiplicación y división; escribiendo el resultado de dichas operaciones.
Ejercicio 5 : Calcular la edad de una persona sabiendo el año de nacimiento.
10
Ejercicio 6 : Resolver la ecuación de 1º grado: ax + b = 0
Ejercicio 7 : Realizar la conversión de grados Celsius a grados Fahrenheit. El resultado se mostrará
con un dígito decimal. (F=(9/5)C+32).
Ejercicio 8 : Se ofrece el 15% descuento sobre total de compra. ¿Cuánto paga el cliente por su
compra?
11
ESTRUCTURAS CONDICIONALES (IF)
La instrucción condicional permite evaluar el estado del programa y tomar decisiones sobre qué código
ejecutar en función del mismo.
SIMPLE
DOBLE
MULTIPLE
if condición1 :
bloque código
if condición1 :
bloque código
else :
bloque código
if condición1 :
bloque código
elif condición2 :
bloque código
elif condición3 :
bloque código
...
else :
bloque código
Evalúa la expresión lógica condición1 y ejecuta el primer bloque de código si es True; si no, evalúa la
siguientes condiciones elif hasta llegar a la primera que es True y ejecuta el bloque de código asociado. Si
ninguna condición es True ejecuta el bloque de código después de else.
Pueden aparecer varios bloques elif pero solo uno else al final.
Un bloque de código es un grupo de sentencias con la misma indentación o sangrado.
edad = 14
if edad <= 18 :
print('Menor')
edad = 14
if edad <= 18 :
print('Menor')
else:
print('Activo')
edad = 14
if edad <= 18 :
print('Menor')
elif edad > 65 :
print('Jubilado')
else:
print('Activo')
Ejercicio 9 : Leer una hora (hora, minuto y segundo) e indicar si la hora es correcta, en caso contrario
no indicar nada.
Análisis
Entrada: hora,minuto,segundo
Proceso: comprobar que hora, minuto y segundo
están dentro de rango
Salida: mensaje
hora = int(input('Introduce hora= '))
minuto = int(input('Introduce minuto= '))
segundo = int(input('Introduce segundo= '))
if hora>=0 and hora<=23 and minuto>=0 and
minuto<=59 and segundo>=0 and segundo<=59:
print('La hora es correcta')
Algoritno
Inicio hora
leer hora,minuto,segundo
si (hora>=0 and hora<=23 and minuto>=0 and
minuto<=59 and segundo>=0 and segundo<=59)
escribir “La hora es correcta”
fin
Introduce hora= 12
Introduce minuto= 3
Introduce segundo= 4
La hora es correcta
12
Ejercicio 10 : Leer el nombre, primer apellido y segundo apellido de dos personas e indicar si pueden
ser hermanos.
Análisis
Entrada: nombre y apellidos de las dos personas.
Proceso: Comparar apellidos y ver coinciden los
dos apellidos
Salida: SI/NO pueden ser hermanos
Algoritno
Inicio familia
leer a_nom,a_ap1,a_ap2
b_nom,b_ap1,b_ap2
si (a_ap1==b_ap1 y a_ap2==b_ap2)
escribir “Si pueden ser hermanos”
si no
escribir “No pueden ser hermanos”
fin-si
fin
a_nom = input('Nombre A = ')
a_ap1 = input('Primer apellido A = ')
a_ap2 = input('Segundo apellido A = ')
b_nom = input('Nombre B = ')
b_ap1 = input('Primer apellido B = ')
b_ap2 = input('Segundo apellido B = ')
if a_ap1==b_ap1 and a_ap2==b_ap2:
print('SI pueden ser hermanos')
else:
print('NO pueden ser hermanos')
Nombre A = Pepe
Primer apellido A = Pérez
Segundo apellido A = Toledo
Nombre B = Ramón
Primer apellido B = Pérez
Segundo apellido B = Toledo
SI pueden ser hermanos
Ejercicio 11 : Cuantos intereses genera un capital? Si los intereses exceden los 7000€, se reinvierte la
cantidad que supere los 7000€. En este caso, cual es el capital?. Mostrar resultado con 2 decimales.
Análisis
Entrada: capital, porcentaje interes
Proceso: calcular intereses y capital final
Salida: capital final
Algoritno
inicio intereses
leer capital, por_interes
intereses = capital * por_interes/100
si intereses>7000 entonces
capital_final = capital+intereses
si no
capital_final = capital
fin-si
escribir capital_final
fin
capital = float(input('Capital inicial= '))
por_interes = float(input('Porcentaje interés= '))
intereses = capital * por_interes/100
if intereses>7000:
capital_final = capital + intereses
else:
capital_final = capital
print(f'Capital final = {capital_final:.2f}')
Capital inicial= 1000
Porcentaje interés= 30
Capital final = 1000.00
Capital inicial= 100000
Porcentaje interés= 25
Capital final = 125000.00
13
Ejercicio 12 : Un alumno aprueba la asignatura si su promedio de 3 calificaciones es mayor o igual a
5, suspende en otro caso.
Análisis
Entrada: 3 calificaciones
Proceso: calcular promedio de notas y ver si
supera el 5.
Salida: mensaje aprobado/suspenso
Algoritno
Inicio nota
leer c1,c2,c3
prom=(c1+c2+c3)/3
si prom>=5 entonces
escribir “aprobado”
si no
escribir “suspenso”
fin-si
fin
nota_1 = float(input('Calificación 1= '))
nota_2 = float(input('Calificación 2= '))
nota_3 = float(input('Calificación 3= '))
promedio = (nota_1+nota_2+nota_3)/3
if promedio >= 5 :
print('Aprobado')
else :
print('Suspenso')
Calificación 1= 3
Calificación 2= 6
Calificación 3= 4
Suspenso
Calificación 1= 4
Calificación 2= 6
Calificación 3= 9
Aprobado
Ejercicio 13 : En una tienda se hace un descuento sobre el valor de la compra según el color de la
bolita que el cliente saque al pagar en caja. Si la bolita es blanca no hay descuento, si es verde, el
descuento es del 10%, si es amarilla es del 25%, si es azul del 50% y si es roja del 100%. ¿Cuál es el
importe final de la compra?
Análisis
Entrada: Total compra, color bolita
Proceso: calcular descuento en función del color
e importe final
Salida: Total a abonar
Algoritno
Inicio compra
leer tc,color
caso color
blanco: d=0
verde: d=tc*0.10
amarillo: d=tc*0.25
azul: d=tc*0.50
rojo: d=tc
fin-caso
imp=tc-d
escribir imp
fin
total_compra = float(input('Total compra= '))
color = input('Color de bolita= ')
if color == 'blanco' :
descuento = 0
elif color == 'verde' :
descuento = total_compra * 0.10
elif color == 'amarillo' :
descuento = total_compra * 0.25
elif color == 'azul' :
descuento = total_compra * 0.50
elif color == 'rojo' :
descuento = total_compra
else :
descuento = 0
print('Color de bolita erroneo')
importe_final = total_compra-descuento
print('A abonar= ',importe_final)
Total compra= 100
Color de bolita= verde
A abonar= 90.0
Total compra= 100
Color de bolita= negra
Color de bolita erroneo
A abonar= 100.0
14
Ejercicio 14 : Que pida dos números y diga si ambos son pares o impares.
Ejercicio 15 : Leer el nombre, primer apellido y segundo apellido de dos personas e indicar pueden
ser hermanos o primos.
Ejercicio 16 : Leer 3 números e imprimir el mayor de los 3. Si ningún número es el mayor de los tres,
debe mostrar el mensaje “no hay mayor”.
Ejercicio 17 : La empresa paga semanalmente a sus trabajadores un salario base por hora trabajada.
Calcular el sueldo semanal de un trabajador si las primeras 40 horas se pagan al salario base, de la hora
41 a 50 se pagan al doble del salario base y de la hora 51 en adelante se pagan al triple del salario base.
Ejercicio 18 : Que pida un número del 1 al 7 y diga a qué día de la semana corresponde.
Ejercicio 19 : En un almacén los artículos se codifican de la forma “nnnct”, donde nnn es el número
de artículo, c es el color, solo es posible ”R” para rojo o “A” para azul, y t es la talla que puede ser “P”
para pequeña, “G” para grande o “X” para extragrande. A partir del código de artículo introducido,
hay que indicar cuál es el número de artículo, cual su color y cual su talla. Deberá mostrar el mensaje
“no codificado” si se introducen valores no contemplados en el color o la talla.
Ejercicio 20 : Calcular y escribir en pantalla la distancia recorrida (metros) cada segundo por un
cuerpo durante los primeros 5 segundos de caída libre, sabiendo que la distancia recorrida viene dada
por la expresión: S=1/2*at2 (S distancia en metros, a: aceleración debida a la gravedad 9,8m/s2, t:
tiempo en segundos)
ESTRUCTURAS CÍCLICAS
BUCLES CONDICIONALES (WHILE)
Repite la ejecución del bloque de código mientras la expresión lógica condición sea cierta.
while condición :
bloque código
En Python no existe la estructura de repetición con condición al final (DO-WHILE con la condición de
repetición al final. Se puede implementar con la estructura WHILE si nos aseguramos de que la condición se
cumpla antes del bucle.
# Pregunta al usuario por un número hasta que introduce 0.
num = None
while num != 0:
num = int(input('Introduce un número: '))
Ejercicio 21 : Sumar n números enteros leídos desde el teclado
Algoritmo:
Inicio
leer n
suma = 0
mientras n>0
leer numero
suma = suma+numero
n = n-1
fin-mientras
escribir suma
n = int(input('Cantidad de numeros= '))
suma = 0
while n>0:
numero = int(input('Numero= '))
suma = suma+numero
n = n-1
print('Suma=',suma)
Cantidad de numeros= 3
Numero= 3
Numero= 5
15
Numero= 7
Suma= 15
fin
Ejercicio 22 : Leer varios números enteros desde el teclado e imprimir los positivos. Finalizar la
entrada de números con el valor cero.
Algoritmo:
Inicio
repetir
leer numero
si numero>0
escribir numero
fin-si
hasta n=0
fin
numero=1
while numero!=0:
numero=int(input('Numero= '))
if numero>0:
print('Positivo=',numero)
numero=int(input('Numero= '))
while numero!=0:
if numero>0:
print('Positivo=',numero)
numero=int(input('Numero= '))
Numero= 3
Positivo= 3
Numero= -2
Numero= 4
Positivo= 4
Numero= 0
Numero= 3
Positivo= 3
Numero= -2
Numero= 4
Positivo= 4
Numero= 0
Ejercicio 23 : Leer el sexo de n personas e indicar cuantos hombres y cuantas mujeres hay en el
grupo.
Algoritmo:
Inicio
h=0 , m=0
leer n
mientras n>0
leer sexo
si sexo=‘hombre’ entonces
h=h+1
si no
m=m+1
fin-si
n=n-1
fin-mientras
escribir “nº hombres”, h
escribir “nº mujeres”,m
fin
hombres = 0
mujeres = 0
n = int(input('Número de personas= '))
while n>0:
sexo = input('Sexo (hombre/mujer)= ')
if sexo=='hombre':
hombres = hombres+1
else:
mujeres = mujeres+1
n = n-1
print('N.Hombres=',hombres)
print('N.Mujeres=',mujeres)
Número de personas= 3
Sexo (hombre/mujer)= hombre
Sexo (hombre/mujer)= mujer
Sexo (hombre/mujer)= mujer
N.Hombres= 1
N.Mujeres= 2
Ejercicio 24 : Un cliente al hacer la compra, cada vez que coge un artículo anota su precio, cantidad y
calcula su coste. Va acumulando lo que gasta en todos los artículos hasta que decide dejar de comprar.
Obtener el total de su compra.
16
Inicio
repetir
leer precio
leer num
coste=precio*num
total=total+coste
leer sigue_comprando
hasta sigue_comprando=“no”
escribir total
fin
total = 0
seguir_comprando = 'si'
while seguir_comprando == 'si':
precio = float(input('Precio= '))
cantidad = int(input('Cantidad= '))
coste = precio * cantidad
total = total + coste
seguir_comprando = input('Seguir (si/no)? ')
print(f'Total compra= {total:.2f}€')
Precio= 10
Cantidad= 3
Seguir (si/no)? si
Precio= 20
Cantidad= 2
Seguir (si/no)? no
Total compra= 70.00€
Ejercicio 25 : Calcular el factorial de un número.
inicio
leer numero
factorial=1
mientras numero>0
factorial = factorial*numero
numero = numero-1
fin-mientras
escribir factorial
fin
numero = int(input('Numero= '))
factorial = 1
while numero>0:
factorial = factorial*numero
numero -= 1
print('Factorial=',factorial)
Numero= 5
Factorial= 120
Ejercicio 26 : Escribir la frase en pantalla “Desea salir? (S/N)” hasta que el usuario pulse la tecla ‘S’ o
‘s’.
Ejercicio 27 : Leer 10 números y obtener de cada uno su cuadrado, su cubo y su cuarta. Escribir la
suma de todos los números y la media.
Ejercicio 28 : Calcular el promedio de 7 notas de un alumno
Ejercicio 29 : Que muestre los números del 1 al 100 en una tabla de 10x10
Ejercicio 30 : Que escriba las tablas de multiplicar del 0 al 10
Ejercicio 31 : Indicar cuantos dígitos pares tiene un número entero positivo N.
BUCLES ITERATIVOS (FOR)
Repite la ejecución del bloque de código para cada elemento de la secuencia, asignado dicho elemento a i en
cada repetición.
for i in secuencia:
bloque código
Se utiliza fundamentalmente para recorrer secuencias o colecciones de objetos: listas, tuplas, rangos,
conjuntos o diccionarios.
for x in [1,2,3,6]:
print(x,end='*')
1*2*3*6*
for letra in 'Hola':
print(letra, end='*')
H*o*l*a*
for i in range(0, 10, 2):
print(i, end=",")
0,2,4,6,8,
Ejercicio 32 : Sumar n números enteros leídos desde el teclado
17
Algoritmo:
Inicio
leer n
suma = 0
repetir desde i=1 hasta i=n
leer numero
suma = suma+numero
fin-repetir
escribir suma
fin
n = int(input('Cantidad de numeros= '))
suma = 0
for i in range(1,n+1):
numero = int(input('Numero= '))
suma = suma+numero
print('Suma=',suma)
Cantidad de numeros= 3
Numero= 3
Numero= 5
Numero= 7
Suma= 15
Ejercicio 33 : Leer el sexo de n personas e indicar cuantos hombres y cuantas mujeres hay en el
grupo.
Algoritmo:
Inicio
h=0 , m=0
leer n
repetir desde i=1 hasta i=n
leer sexo
si sexo=‘hombre’ entonces
h=h+1
si no
m=m+1
fin-si
fin-repetir
escribir “nº hombres”, h
escribir “nº mujeres”,m
fin
hombres = 0
mujeres = 0
n = int(input('Número de personas= '))
for i in range(1,n+1):
sexo = input('Sexo (hombre/mujer)= ')
if sexo=='hombre':
hombres = hombres+1
else:
mujeres = mujeres+1
print('N.Hombres=',hombres)
print('N.Mujeres=',mujeres)
Número de personas= 3
Sexo (hombre/mujer)= hombre
Sexo (hombre/mujer)= mujer
Sexo (hombre/mujer)= mujer
N.Hombres= 1
N.Mujeres= 2
Ejercicio 34 : Calcular el factorial de un número.
inicio
leer numero
factorial=1
repetir desde n=1 hasta n=numero
factorial = factorial*numero
fin-mientras
escribir factorial
fin
numero = int(input('Numero= '))
factorial = 1
for n in range(1,numero+1):
factorial = factorial * n
print('Factorial=',factorial)
Numero= 5
Factorial= 120
Ejercicio 35 : Indicar si el número real introducido es correcto (solo puede contener dígitos, el punto
decimal y el signo - )
inicio
leer numero
correcto=cierto
repetir desde digito=digito1 hasta digito=digitoN
si digito es incorrecto entonces
correcto = falso
fin-si
fin-repetir
numero = input('Numero= ')
correcto = True
for d in numero:
if (d<'0' or d>'9') and d!='.' and d!='-':
correcto = False
if correcto:
print('Número correcto')
else:
print('Numero incorrecto')
18
escribir correcto
fin
Numero= -34.6
Número correcto
Numero= -34.56t
Numero incorrecto
Ejercicio 36 : Indicar cuantos dígitos pares tiene un número entero positivo N.
numero = input('Numero= ')
inicio
pares = 0
leer numero
for digito in numero:
pares=0
d = int(digito)
repetir desde digito=digito1 hasta digito=digitoN
if d%2==0:
si digito=par entonces
pares = pares+1
pares=pares+1
print('Dígitos pares=',pares)
fin-si
fin-repetir
Numero= 123457896
Dígitos pares= 4
escribir pares
fin
Ejercicio 37 : Leer 10 números y obtener de cada uno su cuadrado, su cubo y su cuarta. Escribir la
suma de todos los números y la media.
Ejercicio 38 : Calcular el promedio de 7 notas de un alumno
Ejercicio 39 : Que muestre los números del 1 al 100 en una tabla de 10x10
Ejercicio 40 : Que escriba las tablas de multiplicar del 0 al 10
Ejercicio 41 : Se tienen N alumnos. Calcular la nota media, la nota más alta y la nota más baja de
todo el grupo.
Ejercicio 42 : Que pida dos números enteros positivos mayores que cero (control de entrada a cada
número: pedir cada número hasta que sea correcto) y muestre todos los números que van desde el
menor al mayor (sin separación entre ellos). Que diga cuantos hay, cual es la suma de todos ellos y cuál
es su media.
Ejercicio 43 : Introducir un número N e identificar si es un número palíndromo. (Un número
palíndromo es un número natural que se lee igual de derecha a izquierda y de izquierda a derecha. Por
ejemplo 1348431).
Ejercicio 44 : Introducir una frase en minúsculas y contar las vocales y las consonantes.
Ejercicio 45 : Calcular el factorial de N números enteros positivos leídos desde el teclado. Realizar
control de entrada: N>0 y no se permite introducir ceros ni números negativos.
Ejercicio 46 : Calcular el mínimo común múltiplo de dos números enteros positivos. Control de
entrada a cada número.
Ejercicio 47 : Un número primo es un número natural mayor que 1 que tiene únicamente dos
divisores positivos distintos: él mismo y el 1. Calcular el mayor número primo entre 1 y N.
FICHEROS
Las operaciones más habituales con ficheros son:
•
•
•
•
Crear o Abrir un fichero.
Escribir datos en el fichero.
Leer datos del fichero.
Cerrar el fichero.
Crear fichero nuevo y escribir dados
19
open(nombre, 'w') : Crea el fichero llamado nombre, lo abre en modo escritura (el argumento ‘w’
significa write) y devuelve un objeto que lo referencia. Si el fichero indicado por la ruta ya existe en el sistema,
se reemplazará por el nuevo.
fichero.write(c) : Escribe la cadena c en el fichero referenciado por fichero.
f = open('saludo.txt', 'w') # Crea un nuevo fichero 'saludo.txt'
f.write('Hola a Python!\n') # Escribe '¡Hola a Python!' en fichero 'saludo.txt'
Añadir datos a un fichero existente
open(nombre, 'a') : Abre el fichero llamado nombre en modo añadir (el argumento ‘a’ significa append) y
devuelve un objeto que lo referencia. El nombre puede contener la ruta completa hasta llegar al fichero.
fichero.write(c) : Escribe la cadena c en el fichero referenciado por fichero.
f = open('saludo.txt', 'a') # Abre el fichero 'saludo.txt'
f.write('Adiós Python!')
# Añade '¡Adiós Python!' en el fichero 'saludo.txt'
Leer datos de un fichero
open(nombre, 'r') : Abre el fichero llamado nombre en modo lectura (el argumento ‘r’ significa read) y
devuelve un objeto que lo referencia. Una vez abierto el fichero, se puede leer todo el contenido del fichero o
se puede leer línea a línea.
fichero.read() : Lee todos los caracteres fasta el final del fichero y los devuelve como cadena de
caracteres.
fichero.read(n) : Lee n caracteres del fichero y los devuelve como cadena de caracteres. Si se ha leído
antes todo el fichero y se ha alcanzado el final de fichero, devolverá una cadena vacía.
fichero.readline() : Lee una línea del fichero y la devuelve como cadenas de caracteres. Si se ha leído
antes todo el fichero y se ha alcanzado el final de fichero, devolverá una cadena vacía.
fichero.readlines() : Lee el fichero completo y devuelve una lista de cadenas de caracteres donde cada
cadena es una línea.
f = open('saludo.txt', 'r')
print(f.read())
Hola Python!
Adiós Python!
f = open('saludo.txt','r')
print(f.readline())
Hola Python!
f = open('saludo.txt', 'r')
print(f.readlines())
[ 'Hola Python!\n' , 'Adiós Python!' ]
Cerrar un fichero
fichero.close() : Cierra el fichero referenciado por el objeto fichero.
Cuando se termina de trabajar con un fichero conviene cerrarlo, sobre todo si se abre en modo escritura.
Mientras está abierto en modo escritura no se puede abrir por otra aplicación.
Si no se cierra explícitamente un fichero, Python intentará cerrarlo cuando estime que ya no se va a usar más.
f = open('saludo.txt', 'r')
print(f.read())
f.close()
Ejercicio 48 : (WC) Crear el fichero “salida.txt” con una cadena de caracteres (frase) introducida por
teclado.
inicio
leer frase
crear fichero y abrir para escritura
escribir frase en fichero
cerrar fichero
frase = input('Frase: ')
file = open('salida.txt','w')
file.write(frase)
file.close()
20
Fichero salida.txt: Hoy hace buen tiempo.
fin
Ejercicio 49 : (WN) Introducir una cadena de caracteres con varios números separados por un
espacio. Crear el fichero “salida.txt” con los números separados por comas y con una coma al final.
Inicio
leer números
crear fichero y abrir para escritura
escribir frase en fichero
cerrar fichero
fin
numeros = input('Numeros: ')
lista = numeros.split()
file = open('salida.txt','w')
for numero in lista:
file.write(numero+',')
file.close()
Fichero salida.txt: 11,22,33,
Ejercicio 50 : (WC) Añadir al fichero “salida.txt” 3 cadenas de caracteres (frases) introducidas por
teclado.
Inicio
abrir fichero para añadir al final
repetir desde n=1 hasta 3
leer frase
escribir frase en fichero
fin-repetir
cerrar fichero
fin
file = open('salida.txt','a')
for i in range(3):
file.write(input('Frase: '))
file.close()
Frase: Hola.
Frase: Buenos dias.
Frase: Adios.
Fichero salida.txt: …contenido anterior…
Hola.Buenos dias.Adios.
Ejercicio 51 : (RWC) Crear el fichero “salida.txt” con la cadena de caracteres (frase) introducida por
teclado. A continuación, leerlo y mostrar su contenido en pantalla.
inicio
leer frase
crear fichero y abrir para escritura
escribir frase en fichero
cerrar fichero
abrir fichero para lectura
leer fichero completo
imprimir en pantalla
fin
frase = input('Frase: ')
file = open('salida.txt','w')
file.write(frase)
file.close()
file = open('salida.txt','r')
texto = file.read()
print(texto)
file.close()
Frase: Hoy hace un buen día.
Hoy hace un buen día.
Ejercicio 52 : Pedir por teclado una cadena de caracteres (frase) y crear un fichero llamado
“salida.txt” con la frase repetida N veces. Cada frase en una línea distinta.
inicio
leer frase y N
crear fichero y abrir para escritura
repetir desde n=1 hasta N
escribir frase en fichero
fin-repetir
cerrar fichero
fin
frase = input('Frase: ')
N = int(input('Repeticiones: '))
file = open('salida.txt','w')
for n in range(N):
file.write(frase)
file.close()
Frase: Hola.
Repeticiones: 4
Fichero salida.txt: Hola.Hola.Hola.Hola.
21
Ejercicio 53 : Pedir por teclado un número entero N y escribir en un fichero llamado “salida.txt” un
cuadrado de NxN asteriscos (N líneas con N asteriscos cada una).
Ejemplo: N=4 Fichero:
****
****
****
****
N = int(input('N: '))
inicio
file = open('salida.txt','w')
leer N
for i in range(N):
crear fichero y abrir para escritura
file.write('*' * N + '\n')
repetir desde n=1 hasta N
file.close()
escribir N asteriscos en fichero
fin-repetir
N: 3
cerrar fichero
Fichero salida.txt: ***
fin
***
***
Ejercicio 54 : Leer los caracteres de un fichero de texto llamado “entrada.txt” y escribirlos en otro
fichero llamado “salida.txt”. Mostrar por pantalla el número total de caracteres leídos/escritos.
Inicio
Abrir fichero entrada.txt lectura
Leer fichero entrada completo -> cadena
Cerrar fichero entrada
Crear y abrir fichero salida.txt escribir
Escribir cadena en fichero salida
Cerrar fichero salida
Imprimir número caracteres de cadena
fin
entrada = open('entrada.txt','r')
cadena = entrada.read()
entrada.close()
salida = open('salida.txt','w')
salida.write(cadena)
salida.close()
print('Caracteres leídos=',len(cadena))
Caracteres leídos= 24
Ejercicio 55 : Comparar el contenido de dos ficheros de texto e indicar si son iguales.
Inicio
Abrir fichero entrada1.txt lectura
Abrir fichero entrada2.txt lectura
Leer fichero entrada1 completo -> cadena1
Leer fichero entrada2 completo -> cadena2
Si cadena1==cadena2
Escribir iguales
Si no
Escribir distintos
Fin-si
Cerrar fichero entrada1
Cerrar fichero entrada2
fin
entrada1 = open('entrada1.txt','r')
entrada2 = open('entrada2.txt','r')
cadena1 = entrada1.read()
cadena2 = entrada2.read()
if cadena1==cadena2:
print('son iguales')
else:
print('son distintos')
entrada1.close()
entrada2.close()
entrada1.txt= Hola▒
entrada2.txt= Hola ▒
son distintos
Ejercicio 56 : El fichero “entrada.txt” contiene una secuencia de números separados por un espacio.
Imprimir en pantalla la suma de todos los números.
22
Inicio
Abrir fichero entrada.txt lectura
Leer fichero entrada completo -> cadena
Cerrar fichero entrada
Convertir cadena en lista
suma = 0
Repetir numero cada elemento de lista
suma = suma + int(numero)
Fin-repetir
Escribir suma
fin
entrada = open('entrada.txt','r')
cadena = entrada.read()
entrada.close()
lista = cadena.split()
suma = 0
for numero in lista:
suma = suma + int(numero)
print('Suma=',suma)
entrada.txt: 1 2 3 4 5 4 3 4 5 7 4 2 8▒
Suma= 52
Ejercicio 57 : El fichero “entrada.txt” contiene una secuencia de números enteros separados por un
espacio. Ordenar los números y escribirlos en el fichero “salida.txt” con un espacio entre los números y
con un espacio al final del fichero.
Inicio
Abrir fichero entrada.txt lectura
Leer fichero entrada completo -> cadena
Cerrar fichero entrada
Convertir cadena en lista
Repetir numero cada elemento de lista
Añadir int(numero) a lista_nueva
Fin-repetir
Ordenar lista_nueva
Crear y abrir fichero salida.txt escribir
Repetir numero cada elemento lista_nueva
Escribir str(numero)+coma
Fin-repetir
Cerrar fichero salida
entrada = open('entrada.txt','r')
cadena = entrada.read()
entrada.close()
lista = cadena.split()
lista_nueva = []
for numero in lista:
lista_nueva.append( int(numero) )
numeros.sort()
salida = open('salida.txt','w')
for numero in lista_nueva:
salida.write(str(numero)+',')
salida.close()
entrada.txt= 1 2 3 4 5 4 3 4 5 7 4 2 8▒
salida.txt= 1,2,2,3,3,4,4,4,4,5,5,7,8,
fin
Ejercicio 58 : El fichero “entrada.txt” contiene una secuencia de números separados por un espacio.
Copiar los números en el fichero “salida.txt” eliminando los números que se repiten. El fichero
“salida.txt” mantendrá un espacio entre los números y con un espacio al final del fichero.
entrada = open('entrada.txt','r')
Inicio
cadena = entrada.read()
Abrir fichero entrada.txt lectura
entrada.close()
Leer fichero entrada completo -> cadena
lista = cadena.split()
Cerrar fichero entrada
lista_nueva = []
Convertir cadena en lista
for numero in lista:
Repetir numero cada elemento lista
if numero not in lista_nueva:
Si numero no está en lista entonces
lista_nueva.append(numero)
Añadir numero a lista_nueva
salida
=
open('salida.txt','w')
Fin-si
for numero in lista_nueva:
Fin-repetir
salida.write(numero+' ')
Crear y abrir fichero salida.txt escribir
salida.close()
Repetir numero cada elemento lista_nueva
Escribir numero+espacio
entrada.txt= 1 2 3 4 5 4 3 4 5 7 4 2 8▒
Fin-repetir
salida.txt= 1 2 3 4 5 7 8 ▒
Cerrar fichero salida
fin
23
Ejercicio 59 : El fichero “entrada.txt” contiene una secuencia de números separados por un espacio.
Leer el fichero e introducir los números en una lista e imprimir en pantalla los números que no se
repiten. Imprimir los números separados por comas y con una coma al final.
entrada = open('entrada.txt','r')
Inicio
cadena = entrada.read()
Abrir fichero entrada.txt lectura
entrada.close()
Leer fichero entrada completo -> cadena
lista = cadena.split()
Cerrar fichero entrada
while lista!=[]:
Convertir cadena en lista
numero = lista.pop()
Mientras lista no esté vacía
if numero in lista:
Extraer numero de lista
while numero in lista:
Si numero está en lista entonces
lista.remove(numero)
Eliminar numero de lista
else:
Si no
print(numero+',')
Escribir numero+coma
Fin-si
entrada.txt= 1 2 3 4 5 4 3 4 5 7 4 2 8▒
Fin-mientras
8,7,1,
fin
Ejercicio 60 : El fichero “entrada.txt” contiene una secuencia de números separados por un espacio.
Leer el fichero e introducir los números en una lista. Imprimir en pantalla la cantidad de veces que se
repite cada número. Imprimir primero el número y unido a él, la cantidad de repeticiones entre
paréntesis. Utilizar comas para separar los números y la cantidad de repeticiones, y una coma al final.
Por ejemplo… entrada.txt= 3 3 5 2 1 7 1 1 10 debería imprimir 1(3),2(1),3(2),5(1),7(1),10(1),
Inicio
Abrir fichero entrada.txt lectura
Leer fichero entrada completo ->
cadena
Cerrar fichero entrada
Convertir cadena en lista
Mientras lista no esté vacía
Extraer numero de lista
repeticiones=0
Mientras numero esté en lista
repeticiones = repeticiones+1
Eliminar numero de lista
Fin-mientras
Escribir numero y repeticiones
Fin-mientras
fin
entrada = open('entrada.txt','r')
cadena = entrada.read()
entrada.close()
lista = cadena.split()
while lista!=[]:
numero = lista.pop()
repeticiones = 1
while numero in lista:
repeticiones += 1
lista.remove(numero)
print(numero,'(',repeticiones,'),',sep='',end='')
entrada.txt= 1 2 3 4 5 4 3 4 5 7 4 2 8▒
8(1),2(2),4(4),7(1),5(2),3(2),1(1),
Ejercicio 61 : Contar las vocales que contiene el fichero entrada.txt
Ejercicio 62 : Leer los caracteres de un fichero de texto llamado “entrada.txt”, eliminar los espacios y
escribirlos en otro fichero llamado “salida.txt”. Mostrar por pantalla el número total de espacios
eliminados.
Ejercicio 63 : El fichero “entrada.txt” contiene una secuencia de números separados por un espacio.
Copiar los números en el fichero “salida.txt” insertando entre cada pareja de números la media de
ambos (número real con dos decimales). El fichero “salida.txt” mantendrá un espacio entre los
números y con un espacio al final del fichero.
Ejercicio 64 : El fichero “entrada.txt” contiene una secuencia de números separados por un espacio.
Leer el fichero e introducir los números en una lista. A continuación, ordenar la lista e imprimir en
24
pantalla los números que faltan para completar la secuencia de números (desde el menor al mayor).
Imprimir los números separados por comas y con una coma al final.
Ejercicio 65 : Comparar el contenido de dos ficheros de texto e imprimir en pantalla cuantos
caracteres no coinciden.
Ejercicio 66 : El fichero “entrada.txt” contiene los DNIs de los clientes de una empresa. Pedir por
teclado un DNI e imprimir en pantalla si el cliente pertenece a la empresa.
Ejercicio 67 : Pedir por teclado una frase y calcular las veces que se repite cada letra. Crear un
fichero “salida.txt” con los resultados, de forma que cada línea contenga un carácter y el número de
repeticiones separados por un espacio.
Ejercicio 68 : El fichero “entrada.txt” contiene una sopa de letras de 5 líneas y 5 caracteres en cada
línea. Introducir por teclado dos números X e Y (entre 0 y 4) y mostrar en pantalla el carácter que
ocupa la fila X y columna Y.
Ejercicio 69 : Realizar un programa en Python que registre las personas que acceden a unas
instalaciones. Para cada persona introducir por teclado su DNI y lo añadirá a un fichero llamado
“salida.txt” (con un espacio de separación). Al final del día, cuando se teclee un DNI=0, el programa
mostrará en pantalla los DNI’s de las personas que han entrado y el número de veces que han entrado
cada una de ellas.
Ejercicio 70 : Crear un fichero "entrada.txt" con los datos tus clientes introducidos por teclado. Cada
línea contendrá los siguientes datos de un cliente: número de expediente (entero), nombre (string de
30 caracteres),3 números que corresponden a los importes de 3 facturas (float). Los datos estarán
separados por un espacio. La creación del fichero finaliza cuando se introduce por teclado un 0 en el
expediente. A continuación, leer el fichero "entrada.txt" y escribir en el fichero "salida.txt" el nombre y
el importe total de las tres facturas de cada cliente (un cliente en cada línea).
Ejercicio 71 : Disponemos de un fichero “entrada.txt” con los datos de los alumnos. Cada línea del
fichero contiene el expediente, nombre (una palabra) y DNI de un alumno. Pedir por teclado un
número de expediente, buscarlo en el fichero “entrada.txt” y escribir en el fichero "salida.txt" su
Nombre y DNI separados por un espacio. Si el expediente no existe, escribir el mensaje “Expediente
erróneo”.
25
Download