#!/usr/bin/env python
# -*- coding: utf-8 -*-
=42
n
= int(input ("Adivina en que número estoy pensando ? "))
v
if (v < 0):
print ("Solo números positivos")
1)
exit (
if (v == n): print ("Bien Hecho!")
else:
print ("Sigue Probando\nEl número es " + ("MAYOR" if (n > v) else "MENOR"))
# Si hemos fallado añadimos una pista
= abs (v -n)
h print ("PISTA :", end='') # No imprime retorno de carro
if h < 5 : print ("TE QUEMAS!!!");
elif h < 10: print ("CALIENTE");
elif (h < 15): print ("TEMPLADO");
else: print ("FRIO");
Python ofrece la construcción if-else
para la
comprobación de condiciones como la mayoría de otros lenguajes, sin
embargo, como ya hemos mencionado anteriormente, Python agrupa
instrucciones, indentando todas ellas al mismo nivel, en lugar de
utilizar caracteres especiales como las llaves {}
. Así que,
para añadir instrucciones a un bloque condicional, solo tenemos que
indentarlas bajo el inicio del bloque, el cual se indica con el carácter
:
. Esta es la forma que tiene Python de indicar que lo que
sigue es un bloque de instrucciones.
SOY NOVATO
Python, al igual que Perl, no requiere que declaremos nuestra variable por adelantado como C o C++ (si bien esto lo podemos hacer y es una buena práctica) y tampoco requiere el uso de caracteres especiales como Perl.
Python, al igual que Perl, ofrece una forma especial para el caso en
el que queramos añadir una condición al bloque else
. En ese
caso utilizaremos elfi
( contracción de
else-if
), la cual nos permite añadir una nueva
condición.
La siguiente secuencia de instrucciones
if h < 5 : print ("TE QUEMAS!")
elif h < 10 : print ("CALIENTE")
else : print ("FRIO")
se leería como:
- Si
h
es menor que 5 imprimeTE QUEMAS
- Sino (si
h
es mayor o igual que 5) sih
es menor que10
imprimeCALIENTE
- Sino (si
h
es mayor o igual que 10) imprimeFRIO
Los paréntesis entorno a las condiciones no son necesario, pero se pueden utilizar para hacer más fácil la lectura del código, siendo solo necesarios en casos en los que tengamos que componer condiciones complejas. Así, la expresión que comprueba si hemos acertado el número la podemos escribir como:
if v == n : print ("Bien Hecho!)
En el caso de que el bloque condicional solo contenga una
instrucción, esta la podemos añadir a continuación del caracter
:
. Como sucede en la línea:
if (v == n) : print ("Bien Hecho!")
SABÍAS QUE…
En realidad, podemos añadir tantas instrucciones como queramos en un
if
de una línea, solo tenemos que separarlas con el caracter;
if (v < 0): print ("Solo números positivos"); exit(1);
Cualquier bloque else
o elif
que siga,
deben ir en una línea separada. Es posible escribir una condición
if-else
en una sola línea utilizando el operador ternario.
Python no tiene un operador ternario como C o Perl, sin embargo ofrece
una sintaxis alternativa que puede resultar un poco confusa si uno está
acostumbrado al operador ternario estilo C ?:
. Esta
sintaxis la podemos ver en la línea en la que indicamos si el número es
mayor o menor y es algo como esto:
-THEN if (condicion) else INSTRUCCION-ELSE`
INSTRUCION"MAYOR" if (n > v) else "MENOR"
Alternativamente se puede utilizar la siguiente constructor:
and INSTRUCION-THEN or INSTRUCCION-ELSE
(condicion > n and "MAYOR" or "MENOR") (n
En este caso estamos abusando de los operadores lógicos
and
y or
para conseguir un resultado similar
al del operador ternario, si bien, hay que tener cuidado con las partes
INSTRUCCION-THEN
y INSTRUCCION-ELSE
ya que si
INSTRUCCION-THEN
resulta devolver un valor, 0
,
False
o None
la expresión no funcionará como
se espera. Esta construcción se basa en la secuencia de evaluación de
una expresión lógica. Para entender la mejor, vamos a re-escribirla de
esta forma:
((condicion) AND True) OR valor
Python comenzará evaluando la primera expresión, nuestra condición,
la cual se convierte en el primer parámetro para la operación
and
que sigue. Un and
lógico solo es verdadero
si los dos operadores son verdaderos:
A AND B = TRUE <===> A = TRUE y B = TRUE
Si A es verdadero, entonces entremos que evaluar el siguiente
operando, para saber si la expresión es verdadera, el cual debe retornar
un valor True
, o de lo contrario la parte else
también se ejecutará. Puesto que la primera parte de la expresión es
verdadera, y la operación lógica or
es verdadera con que
solamente uno de sus operadores sea verdadero… pues ya no tenemos que
ejecutar INSTRUCCION-ELSE
.
Por el contrario, si condicion
es falso, el primer
operador and
devolverá falso independientemente del valor
de INSTRUCCION-THEN
, la cual no es necesario ejecutar.
Pero, la expresión OR
que sigue, aún puede cumplirse
dependiendo de el resultado de INSTRUCCION-ELSE
… así que es
necesario ejecutar esa última instrucción.
Como podéis ver este, llamémoslo truco, necesita que
INSTRUCCION-THEN
sea una expresión (algo que devuelva un
valor), no podemos utilizar sentencias como print
si usamos
Python2… pero la función print
de Python3 funcionará
perfectamente.
SOY NOVATO
Como Perl, Python es capaz de inferir el tipo, pero a diferencia de este, una vez que el tipo es asignado a una variable ese tipo es fijo. Por esa razón necesitamos utilizar
int
al principio del programa, para convertir la cadena de caracteres que devuelveinput
en un número. De lo contrario las condiciones de más abajo fallarían ya que estaríamos comparando cadenas de caracteres y números.
Python, al igual que Perl, no ofrece una instrucción
switch
, sin embargo es posible simular esta instrucción
utilizando distintas técnicas como diccionarios, iteradores o
clases.
Así mismo, Python tampoco permite definir constantes. En su lugar los programadores Python tienen como convenio considerar valores contantes las variables cuyos nombres están en mayúsculas, lo cual es una práctica habitual en muchos lenguajes.
Resumen
- Soporta
if ... [elif] ...[else] ...
- Soporta forma reducida
Comando if (cond);
- Soporta operador terciario
valor_Verdad if (condicion) else Valor_Falso
- Python no soporta booleanos como tipo nativo pero si como una subclase de los enteros
- No soporta
switch
- No soporta constantes nativamente. El convenio es usar nombres en mayúsculas
Interesado en aprender Python
A través de nuestra cuenta del Programa de Afiliados de Amazon, te recomendamos este libro:Como parte de este programa, recibimos una comisión por compras realizadas utilizando este enlace.■