Uploaded by playstationcuenta53

Programacion2021-1

advertisement
Tema 4.
Introducción a la programación.
•
•
•
•
•
•
•
•
Lenguajes de programación
El lenguaje Python
Elementos del lenguaje
Tipos de Datos
Operadores y expresiones
Variables
Entrada y salida por terminal
Primeros programas
Iniciación a la Computación Científica.
Grado en Matemáticas. Curso 2021 - 2022.
Programación
 Problema  Algoritmo  Programa/Código (fuente)
 Pasos  diagrama de flujo  pseudocódigo  programa
 Diseñar  codificar  depurar  mantener (programas)
 Implementar  compilar vs. interpretar
 Lenguaje de programación: sintaxis, paradigma
 Lenguajes de alto nivel / de bajo nivel (código máquina)
 Lenguajes utilizados: Fortran, COBOL, Basic Pascal, C, Lisp,
SQL, HTML, PHP, Java, JavaScript, Ruby, C++, C#, … Python,
R, Mathematica, Maple, MATLAB, Octave, SageMath, Go, Swift
2
2020
¿Porqué Pyhton?
3
2020
Características de Python
•
•
•
•
•
•
•
•
•
•
•
•
4
Lenguaje de programación de alto nivel
Interpretado; (script) aunque puede ser compilado
De código abierto; compatible GNU
Fácil de entender por su sintaxis, y buen “estilo”
Extensible e integrable (C, Java, HTML, …)
Multiplataforma; adaptado a múltiples S.O.
Multiparadigma; soporta diferentes paradigmas de programación:
Orientación a Objetos (POO), Imperativa, Funcional, …
De tipado dinámico; cambio de tipo en tiempo de ejecución
Maduro (30 años); creado por Guido van Rossum en 1990
Mantenido por una gran comunidad; versión 3.9 (Mayo 2020)
Desarrollado por la PSF (Python Software Foundation)
Documentación e instalación: www.python.org
2020
Interpretando y Compilando
Las formas de trabajar con Python son:
 Interpretado:
No requiere de un compilador que traduzca el código escrito
en Lenguaje Python a un código ejecutable en el ordenador
 Interpretado en Consola
 Interpretado en Fichero

5
Compilado:
 Python se puede compilar:
 Usando módulos o herramientas intermedias como;
bytecode, compiler, py_compile,
pyinstaler, Cython, py2exe
2020
Interpretando en consola
Sesiones interactivas: escribes código y obtienes respuesta del intérprete
 Teclea python (o python3) en un terminal y se pulsa [intro]:
se presenta el indicador (prompt) >>> del intérprete de Python.
 Se escribe una línea de código pyhton y se pulsa [intro]:
se ejecuta la instrucción y se vuelve a mostrar el indicador >>>
tras mostrar el resultado si corresponde
 Si el código no es correcto se muestra un mensaje de error de sintaxis.
 Si la instrucción está incompleta:
se presenta el indicador secundario ... del intérprete en espera y
… se continua completando la instrucción
 Para salir, manteniendo [ctrl] pulsada, se pulsa d; ctrl-d (ctrl-z en Windows)
Ejemplos:
$ python3
>>> print("Hola")
Hola
>>> nombre = "Pepe"
>>> print("Hola", nombre, "!")
Hola Pepe !
>>> 2 + 3
5
>>>
6
>>> print("Hola",
...
"y adiós")
Hola y adiós
>>> 2 + algo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'algo' is not defined
>>> [ctrl]-d
$
2020
Interpretando en fichero
No en el tema 4
 Se leen y se ejecutan una a una todas las instrucciones del fichero.
Por ejemplo, con este fichero
# Fichero hola.py
nombre = "Pepe"
print("Hola", nombre)
Se obtiene este resultado:
$ python hola.py
Hola Pepe
 Se hace ejecutable el fichero indicando en la primera línea la ruta al intérprete
Creamos el fichero con este contenido
• #!/usr/bin/python3
• nombre = "Pepe"
• print("Hola"+nombre)
•
- El shebang (#!) indica al S.O. que ejecute el script usando el intérprete especificado
$ chmod +x hola.py
$ ./hola.py
HolaPepe
7
2020
Elementos del lenguaje






•




Datos: información que se manipula con el lenguaje
Tipos de datos: cadenas, entero, real, booleano, listas, vectores, …
Variables: espacios de memoria donde asignar valores que pueden cambiar
Constantes: valores inmutables; cuyo valor no se puede cambiar
Identificadores: nombres que dar a distintos elementos
Operadores: indican operaciones a realizar con los datos; unarias o binarias
aritméticos (+,-,*,…) relacionales (>,<,…), lógicos (and,or,…)
Comentarios: aclarar el código (#, """, ''', …)
Funciones: realizan cálculos a partir de datos y parámetros
Expresiones: combinación de símbolos expresando fórmulas matemáticas
Instrucciones: órdenes para que se ejecuten en el ordenador
• Secuenciales: una detrás de otra; en secuencia
• Selectivas: si ocurre o no ocurre algo
• Iterativas: repite pasos con algún cambio
 Estilo y convenciones: recomendaciones de escritura; PEPs en Python
• Atender a la PEP 8 (https://www.python.org/dev/peps/pep-0008/)
8
2020
Tipos de datos
 Tipos de datos
 Simples: números (entero, real, complejo), cadenas, booleanos, …
 Compuestos: listas, tuplas, conjuntos, diccionarios, …
 Tipado dinámico
 La asignación de tipo a variables y objetos puede cambiar durante la
ejecución de los programas de forma muy sencilla.
No es necesario declarar el tipo de la variable sino que se determina
por el valor que se le asigna; así se le cambia el tipo al asignarle un
valor de otro tipo.
 Fuertemente tipado
 No se puede tratar una variable como si fuera de otro tipo distinto si
no se convierte antes de forma explícita.
La conversión del tipo de los datos se realiza de forma sencilla y
natural
9
2020
Datos simples
Tipos de datos simples:
 Números (numbers): Secuencia de dígitos representando números positivos o
negativos (usando el signo menos -), enteros o reales (con el punto decimal) o
complejos (usando j en lugar de i). Se pueden expresar números reales usando la
notación exponencial o científica y enteros en binario, empezando con 0b, en octal,
empezando por 0o, o en hexadecimales, empezando con 0x.
Ejemplos: 37, 0, -5, 2.1732, 3+2j, 0b110101, 0x7b2, 22.3e5, 0o56
Los números enteros se almacenan, en principio, con 8 bits; aunque pueden llegar
a alcanzar un tamaño ilimitado. Los números reales (float) se almacenan
representados en punto flotante y tienen doble precisión (16 cifras significativas).
 Cadenas (str, strings): Secuencias de caracteres alfanuméricos que representan texto.
Se escriben entre comillas simples o entre comillas dobles.
Ejemplos: 'Hola', "Buenos días", "¿Qué tal?", "13", "Don't", ...
 Booleanos (boolean): Este tipo contiene únicamente dos elementos:
True y False, que representan los valores lógicos verdadero y falso.
Estos datos son inmutables; su valor es constante y no puede cambiar.
10
2020
Números





Números (numbers): Secuencia de dígitos representando números.
Pueden tener signo menos “–” representando números negativos
Pueden tener punto “.” para representar números reales; “float”
Se puede usar la notación científica con “e” o “E”; p.e.: 1e-2, 2.4E7
Se pueden usar cualquiera de los símbolos “j” o “J” para representar
números complejos; p.e.: 2+3j
 Si empiezan con 0b, 0o o 0x son números en binario, octal o hexadecimal
Ejemplos:
>>> type(1)
<class 'int'>
>>> type(-2)
<class 'int'>
>>> type(3.4)
<class 'float'>
>>> type(5+6j)
<class 'complex'>
>>> type(0b1101)
<class 'int'>
>>> type(012)
11
>>> type(1+j)
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
NameError: name 'j' is not defined
>>> type(0b121)
File "<stdin>", line 1
type(0b121)
^
SyntaxError: invalid syntax
2020
Binario, hexadecimal, …
 Las funciones bin(), oct() y hex() dan una cadena con la expresión binaria,
octal o hexadecimal de un número entero. Ejemplos:
bin(111):'0b1101111', oct(111):'0o157', hex(111):'0x6f'
 Los números binarios se pueden operar bit a bit con &, |, ^, ~, << y >>
 Se pueden operar con los operadores aritméticos; el resultado es un entero
 Un número entero se representa con 8 bits; aunque pueden tener tamaño ilimitado
Ejemplos:
>>> 0b1101
13
>>> 0b111
7
>>> bin(20)
'0b10100'
>>> '0b1101' + '0b111'
'0b11010b111'
12
>>> 0b1101 + 0b111
20
>>> bin(0b1101 + 0b111)
'0b10100'
>>> bin(0b1101 * 0b111)
'0b1011011'
>>> hex(0xd+0x7)
'0x14'
2020
Cadenas
Se tratarán en el tema 8
 Cadenas (str, strings): Son secuencia de caracteres alfanuméricos que
representan texto. Se escriben entre comillas simples o dobles.
•
Ejemplos: 'Hola', "Buenos días", "¿Qué tal?", "123"
 Algunos caracteres especiales
•
>>> '' # cadena vacía
•
•
•
>>> ' ' # espacio en blanco
>>> '\n' # cambio de línea
>>> '\t' # espacio de tabulación
 Se accede a los caracteres de la cadena con su índice
•
•
•
>>> c[i] # carácter i de la cadena c
>>> c[0] # primer carácter de la cadena c
>>> c[-1] # último carácter de la cadena c
H
o
l
a
0
1
2
3
 Subcadenas.
•
Cad[i:j:k]: es la subcadena de Cad formada por:
• los caracteres de Cad entre i y j tomados cada k.
Ejemplo: 'Computación Científica'[1:8:3] es 'ouc'
 La operación: 'cadena' in 'subcadena' devuelve True
13
2020
Datos compuestos
Se tratarán en el tema 6
Tipos básicos de datos compuestos:
 Lista (list): Secuencia ordenada de objetos de distintos tipos.
Sus elementos se delimitan por corchetes y se separan por comas.
Ejemplo: [3.5, True, "Si", [2, 4.0]]
 Tupla (tuple): Secuencia ordenada inmutables de objetos de distintos tipos.
(se dice inmutables porque no puede cambiar durante la ejecución)
Sus elementos se delimitan por paréntesis y se separan por comas.
Ejemplo: (3.0, 'tres', 3)
 Diccionario (dict): Colección de objetos con una clave asociada a cada uno.
Se representan por pares separados por comas, donde cada par contiene una clave
y su objeto asociado, separados por dos puntos, y delimitados por llaves.
Ejemplo: {'pi':3.1416, 'seis':6, '3':3}
 Conjunto (set): Colección de objetos distintos sin ordenar.
Sus elementos se delimitan por llaves y se separan por comas.
Ejemplo: {3.1416, 'seis', 3}
14
2020
La función type
• La clase (class) o tipo de un dato se obtiene con el comando type()
Ejemplos:
>>> type(1)
<class 'int'>
>>> type(5.3)
<class 'float'>
>>> type(5+3j)
<class 'complex'>
>>> type("Hola")
<class 'str'>
>>> type([1, 2, 3, 4])
<class 'list'>
>>> type({'pi':3.1, 'e':2.7})
<class 'dict'>
>>> type((1, 'dos', 3))
<class 'tuple'>
15
Dudas:
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
type(3.0)
type(3+0j)
type(3e0)
type('3')
type("3")
type([3])
type((3))
type({3})
type([])
type({})
type(())
type(0)
type(None)
2020
Conversión de tipos
Las funciones con el mismo nombre que un tipo convierten un dato a ese tipo,
siempre y cuando la conversión sea posible.
 int() convierte a entero
Ejemplos: int('12') 12, int(True) 1, int(3.2) 3, int('III') Error
 float() convierte a real
Ejemplos: float('3.1') 3.1, float(True) 1.0, float(5) 5.0,
 str() convierte a cadena
Ejemplos: str(3.14) '3.14', str(True) 'True', str(0b11) '3'
 complex() convierte a complejo
Ejemplos: complex(3) (3+0j), complex('1.7') (1.7+0j),
 bool() convierte a lógico o booleano
Ejemplos: bool(0) False, bool('2,7') True, bool('') False
 list(), tuple(), set() convierten a lista, tupla o conjunto
Ejemplos: list((1,2,3)) [1,2,3], tuple([2,7]) (2,7),
set([2,2,1]) {1,2},
list('Hola') ['H','o','l','a']
Dudas: bool(), bool('0'), bool(-1), bool(0.1), bool(0.0),
float(4+0j), float('5'), int('five'), ...
16
 Nota: Las partes real e imaginaria de un complejo c se obtienen con: c.real y c.imag
2020
Operadores aritméticos
 Los operadores aritméticos son:
suma | resta | producto | división | potencia | división entera | resto entero
•
+ | - |
*
|
/
|
**
|
//
|
%
Ejemplos:
•
•
•
•
•
•
•
2+3
3-2
6*3
4/2
3**2
5//3
Se aplican a datos numéricos; números, no necesariamente del mismo tipo
El tipo del resultado depende del operador y del tipo de los operandos.
Ejemplos: 7//1.2 3.1–2.1 6.7%2.1 4.2/2.1 8j/2j
Si los operandos son de distinto tipo, se convierten a un tipo común para su operación
La división / entre dos enteros, aunque sea exacta, da un real (float).
Ejemplos: 8*1.5 6.7%2 28/2 4**0.5 8j/2j (-1)**0.1
Los operadores // y % se pueden usar con reales pero no con complejos
Observar el comportamiento de // y % con operandos negativos
Ejemplos: -7//2, -7%2, 7//-2, 7%-2, -7//-2, -7%-2
Algunas operaciones dan un resultado sorprendente; hay que experimentar y analizar
Ejemplos: 2/3, 7//0, 2.2-1.2, 5%1.2, (-1)**0.5, 10**100
 Operadores aritméticos unarios: positivo (+), negativo (-):
•
+3.2, -7,
-0b101,
5-3j,
-2+1.7,
17
13%3
2*-3, 3**-2
2020
Operadores lógicos
 Operadores de comparación:
Los operadores relacionales o de comparación son:
•
•
mayor que | menor que | igual | mayor o igual |
>
<
==
menor o igual | distinto.
>=
<=
!=
Ejemplos: 2>3 | 3.0==3 | 4>=5 | 5.2<=7 | 'a'>'b' | 2.8<3 | 3!='3'
'Hola'<'hola' | 0.6/2 == 0.3 | 0.1+0.2 == 0.3 | 'a'=="a"
• Se pueden comparar datos del mismo tipo y, a veces, de tipo distinto.
 Operadores booleanos:
Los operadores booleanos son tres:
“y”: and
|
“o”: or
|
“no”: not
Ejemplos: True and 2>3 | ('2' != 2) or False | [1,2] == (1,2) | not True
Nota: obsérvese el uso de mayúsculas y minúsculas con datos y operadores booleanos
•
18
•
Las comparaciones se pueden encadenar:
2 < 5 <= 7 equivale a (2 < 5) and (5 <= 7)
(la comparación, 2 < 5 > 3, aunque poco elegante, es válida)
•
Los datos booleanos True y False tienen asociados los valores enteros 1 y 0
Dudas: >>> 2-(3==-1)
>>> 2==3
-1>1
>>> true = False - 1
2020
Operaciones en binario
No en ICC
 Los operadores binarios operan bit a bit con la expresión en binario
 Se usan 8 bits para representar enteros; los negativos con complemento a 2
 Son los operadores:
&
|
^
~
<<
>>
• El operador binario & calcula la operación “and” bit a bit.
• El operador binario | calcula la operación “or” bit a bit
• El operador binario ^ calcula la operación “xor” bit a bit
• El operador unario ~ invierte los bits de su operando
• El operador binario << desplaza los bits a izquierda que indique
• El operador binario >> desplaza los bits a derecha que indique
Ejemplos:
>>> 5&12 # 00000101 & 00001100
4
# 00000100
>>> 5|12 # 00000101 | 00001100
13
# 00001101
>>> 5^12 # 00000101 ^ 00001100
9
# 00001001
19
>>> ~5
-6
>>> 5<<2
20
>>> 5>>1
2
#
#
#
#
#
#
~00000101
11111010
00000101<<2
00010100
00000101>>1
00000010
2020
Expresiones
Las expresiones son combinaciones de datos y operaciones entre ellos:
 Hay que tener en cuenta la precedencia de las operaciones y la asociatividad
Ejemplos: 1 * 2+3, 3*4/2, 12 / 3*2, 3**2**3, 4>3+3
 Prioridad: 1) potencias 2) productos/cocientes 3) sumas/restas 4) comparaciones
Ejemplos: 2*5+3, 2*5**2, 2**3*4, 2+3*2**3, 1>0+1
 Asociatividad: por grupo:
• Sumas/restas:
5-3-2,
• Productos/cocientes: 12/4/2,
• Potencias:
3**2**3,
(5-3)-2
(12/4)/2
3**(2**3)
por la izquierda
por la izquierda
por la derecha
 Con la misma prioridad, el orden dado por la asociatividad
Ejemplos: 5 - 1+3,
6 / 4*2,
8 / 4/2,
7 – 4-2
 Cambio del orden con paréntesis ( ); no se pueden usar [] ni {}
Ejemplos: 1–(2+3), 12/(3*2), 2 * (5+3), (3**2)**3
 El uso de espacios es arbitrario:
Ejemplos: -2 * 5+3, -2*5 + 3, -2*5+3, - 2*5+3
20
2020
Variables
 Las variables son espacios de memoria donde almacenar datos a los
que se accede mediante su nombre o identificador.
 Para asignar un valor a una variable se utiliza el operador “=”, y
para borrar una variable se utiliza la instrucción del.
 No se puede usar una variable a la que no se le ha asignado un valor.
Ejemplos:
lenguaje = 'Python'
Nombre = "Pepe"
x = 3.25
n = 25
y = 3 + 2
a = x + y
b = 4*x + y
media = suma/n
# ERROR
5 = m
# ERROR
a = 3x+2
# ERROR
mi_lista = [1, 'dos', (1,2), {0,1}]
21
2020
Asignaciones




Las asignaciones son las acciones de introducir valores a variables.
La asignación determina el tipo de la variable; no se declaran previamente
Se usa el signo = con la variable a la izquierda y una expresión a la derecha
Puede realizarse junto a otra acción:
a1, a2 = 1, 2
a, b = b, a
x += 2
x -= 1
x = None
del x
#
#
#
#
#
#
Asignación múltiple: a1 = 1, a2 = 2
Intercambio de valores: a <--> b
Incremento (equivale a x = x + 2)
Decremento (equivale a x = x - 1)
Asigna un valor no definido
Elimina la variable
 Asignaciones con operador: Todos los operadores aritméticos tienen su
operador de “asignación con operador” asociado.
Son los siguientes: += -=
*=
/=
**=
//=
%=
Ejemplos: x *= 2, x /= 0.1, x //= y, y **= 2
22
2020
Identificadores
 Identificadores:
Un identificador es un nombre con el que se hace referencia al contenido
de una variable o de una constante, o a una función, o a cualquier objeto …
 Elección de buenos identificadores:
 Formado por letras, números y guion bajo “_”
 No pueden contener espacios ni otros símbolos: *, /, +, -, : …
 Comienzan con una letra (mayúscula o minúscula)
 Se distingue entre mayúsculas y minúsculas
 No se pueden usar palabras reservadas:
(palabras que ya tienen un significado en Python)
 Deben ser naturales, significativos, claros, . . .
 En Python se suelen usar identificadores en minúsculas y con el guión
bajo “_” para separar las palabras que componen un identificador
 Ejemplos:
número_de_filas, tamaño_de_la_muestra, n_col
23
2020
Tipado dinámico
• A diferencia de otros lenguajes, las variables en Python no tienen asociado
un tipo y no se declaran antes de usarlas
• El tipo de una variable se establece al asignarle un valor.
Si a una variable se le asigna un entero, será de tipo int, pero si después se
le asigna un dato real a la misma variable, pasa a ser float.
• Esto es lo que se conoce como tipado dinámico.
Ejemplo:
>>> a = 3
>>> type(a)
<int>
>>> a = 2.3
>>> type(a)
<float>
24
•
•
No se permite tratar a una variable como si fuera de
un tipo distinto al que tiene, es necesario convertirla
de forma explícita al nuevo tipo previamente
Esto es lo que se conoce como fuertemente tipado.
Ejemplo:
>>> a = 3
>>> float(a)
3.0
>>> type(a)
<int>
2020
Conversión de tipo
 Para cambiar el tipo del dato de un variable basta con usar el nombre o
identificador del tipo como función, pero la variable no cambia.
Ejemplos:
>>>
>>>
1
>>>
1.0
>>>
>>>
3.0
>>>
3
>>>
>>>
3
y = 1.0
int(y)
y
z = 3
float(z)
z
x = 3.2
int(x)
>>> y = (1,2,3)
>>> list(y)
[1, 2, 3]
>>> y
(1,2,3)
>>> y = 5
>>> str(y)
'5'
>>> y = float('5.8')
>>> y
5.8
>>> y = 1e3
>>> str(y)
...
• Para cambiar el tipo de la variable es necesario hacer una asignación de la
forma: variable = tipo(variable)
Ejemplos: y = int(y)
z = float(z)
x = complex(x)
25
2020
Operando con float
 Los números reales o racionales (float ) se almacenan en base 2 (binario)
Por ejemplo: 0.125 en decimal es 0.001 en binario (0.125 = 1 · 2-3)
 Hay fracciones sencillas no tienen representación decimal exacta como 1/3 = 0.33333…
 Paralelamente, la mayoría de los decimales no tienen representación exacta en binario
Por ejemplo: 0.1 en binario es 0.00011001100110011001100...
 Los números que se almacenan no son decimales exactos sino aproximaciones,
por lo que no se pueden esperar siempre resultados exactos
Por ejemplo: 0.1 + 0.2 no da 0.3, 0.6/3 no da 0.2, 0.3%0.1 no da 0.0
Ejemplo:
>>> 0.1 + 0.2
0.30000000000000004
>>> 0.6/3
0.19999999999999998
>>> 0.1+0.2 == 0.3
False
>>> 0.3 % 0.1
0.09999999999999998
>>> 0.3 // 0.01
29.0
>>> 2 // 0.01
19.0
 Para eludir estos problemas Python cuenta, entre otras posibilidades, con
los módulos decimal y fractions y con la función round.
26
2020
Entrada por terminal
No se usa en el tema 4
 Función input: para asignar a una variable un valor introducido por el usuario en la
consola se usa la función input(mensaje), que muestra la cadena mensaje por la
terminal y devuelve una cadena con la entrada del usuario; siempre se devuelve una
cadena, incluso si el usuario introduce un dato numérico.
 Ejemplos:
>>> nombre = input('¿Cuál es tu nombre? ')
¿Cuál es tu nombre? Pepe
>>> nombre
'Pepe'
>>> edad = input('¿Cuál es tu edad? ')
¿Cuál es tu edad? 37
>>> edad
'37'
>>> edad = int(input('¿Cuál es tu edad? '))
>>> ¿Cuál es tu edad? 37
>>> edad
37
>>> edad = int(input('Pon tu edad real, '+nombre+': '))
>>> Pon tu edad real, Pepe: 47
>>> edad
47
27
2020
Salida por terminal
No se usa en el tema 4
 Función print(): para mostrar un dato por la terminal se utiliza la función print()
que, en general, puede tener los parámetros sep y end, de la forma:
print(datos, sep=' ', end='\n')
Donde datos son los datos a imprimir (pueden indicarse tantos datos como se desee
separados por comas), sep es el separador entre los datos; por defecto es un espacio
' ' y end es la cadena final de impresión; por defecto es un cambio de línea; '\n'
Ejemplo:
>>> print('Hola')
Hola
>>> nombre = 'Pepe'
>>> print('Hola', nombre)
Hola Pepe
>>> print('Hola', nombre, sep='')
HolaPepe
>>> print('Hola', nombre, end='!\n')
Hola Pepe!
 El formato de cadena (f-string) especifica como se imprimen números dentro de un
texto, para enteros el ancho en dígitos (tras los pos puntos : y antes de la letra d) y
para reales, además, la precisión (tras el punto . y antes de la letra f) de la forma:
Ejemplo:
>>> n, x = 12, 7.1234
>>> print(f'El entero es {n:4d} y el real es {x:6.2f} ')
El entero es
12 y el real es
7.12
>>> print(f'El entero es {10*n:4d} y el valor {10*x:6.2f} ')
El entero es 120 y el real es
71.23
28
2020
Comentarios No se usa en el tema 4
 El objetivo al introducir comentarios en el código fuente es explicar o
aclarar cómo está hecho el programa.
 Los comentarios son ignorados por el intérprete o compilador.
 """ o ''' delimitan los comentarios que pueden ocupar más de una línea.
 # especifica el comienzo de un comentario de una línea.
 Los comentarios apropiados dan calidad al código.
 Los espacios en blanco (horizontales y verticales) dan estructura
Ejemplos:
a = 3
# esto es un comentarios en una línea
""" esto es un comentario
que puede ocupar
varias líneas
"""
''' Esto es otro comentario '''
29
2020
Programas o script
No se usa en el tema 4
 Ejemplos: crear un fichero llamado ejemplo1.py con este contenido:
# CÓDIGO PYTHON PARA EL CÁLCULO DEL ÁREA DE UN TRIÁNGULO
print('\n Programa calcular el área de un triángulo\n')
base = float(input('¿Cuál es la base del triángulo? '))
altura = float(input('¿Cuál es la altura del triángulo? '))
print('El área del triángulo es:',base*altura/2)
Teclea en la consola: pyhton ejemplo1.py
Otro ejemplo: ejemplo1.py
''' El Índice de Masa Corporal (IMC)
se calcula dividiendo el peso (en kg)
por el cuadrado de la estatura (en m) '''
print('\n Cálculo del ICM (peso en kg)/(altura en m)^2')
peso = float(input('¿Cuál es el peso (en kg)? '))
estatura = float(input('¿Cuál es la estatura (en m)? '))
print('El IMC es:',round(peso/(estatura**2),2))
 Añadir #!/usr/bin/python3 en la primera línea para que Linux encuentre el
intérprete, si es necesario
30
2020
Uso de variables
 Ejemplos: cambiando entre formas de expresar el tiempo
#!/usr/bin/python3
# Programa para calcular horas, minutos y segundos
tiempo = int(input('Tiempo total en segundos: '))
print("Equivale a", tiempo//3600, "horas, ",
tiempo//60-60*(tiempo//3600), "minutos y",
tiempo-60*(tiempo//60), "segundos")
#!/usr/bin/python3
# Cálculo de horas, minutos y segundos a partir de tiempo
t = int(input('Tiempo total en segundos: '))
h = t//3600
m = t//60-60*h
s = t-60*(m+60*h)
print("Equivale a", h, "horas, ", m, "minutos y", s, "segundos")
31
2020
Repaso
 ¿Qué ocurre al usar el operador // con reales? Poner tres ejemplos.
 ¿Qué resultado se obtiene al usar el operador % con números negativos?
Poner tres ejemplos.
 ¿Qué ocurre al usar el operador ** cuando el primer operando es negativo y
el segundo en menor que 1? Poner tres ejemplos.
 Comprobar con los operadores // y % que la igualdad
“dividendo = divisor * cociente + resto”
se cumple también para números reales y números negativos
 ¿Qué responde Python al dividir por 0?
 ¿Qué ocurre en Python si aparecen dos o más operadores consecutivos?
p.e.: +-3, 3*-+5, 2++3, 3--2, 2/-4, 3.2%-2, 2-/5, 3* ¿Cómo se le cambia el tipo a una variable? De entero a real o real a entero
 ¿cómo se obtiene la parte fraccionaria de un real? ¿porqué muchas veces no
se obtiene el valor exacto en esto?
 ¿Cuál es el número más grande que puedes tener en Python?
32
2020
33
2020
Download