Python02

29
PYTHON Lección No. 2 M.Sc. Victor Pando Beltrán [email protected] http://www.civil-uancv.pe/ aulavirtual

description

Lección No. 2:Estructura condicional if, operadores relacionales, estructura condicional if anidada, operadores lógicos, estructura condicional if-elif, estructura repetitiva while.

Transcript of Python02

Page 1: Python02

PYTHONLección No. 2

M.Sc. Victor Pando Beltrán

[email protected]

http://www.civil-uancv.pe/aulavirtual

Page 2: Python02

AGENDA

Estructura condicional if Operadores relacionales Estructura condicional if anidada Operadores lógicos Estructura condicional if-elif Estructura repetitiva while

Page 3: Python02

Estructura condicional if (1/3)

Igual que otros lenguajes cuando tenemos que tomar una decisión en nuestro programa debemos utilizar la estructura if.

Algo muy importante en el lenguaje Python que no lo tienen otros lenguajes es que la indentación es obligatoria e indica las intrucciones contenidas en un if.

Analicemos el siguiente ejemplo:

nombre='juan' edad=15 if edad<18:

print nombre print ' es menor de edad.'

print 'Fin del programa'

Page 4: Python02

Estructura condicional if (2/3)

La estructura if contiene una condición, si dicha condición se verifica verdadera luego se ejecutan todas las instrucciones que se encuentran indentadas (es decir corridas a la derecha). Es muy común utilizar una indentación de 4 espacios.

En nuestro ejemplo la instrucción:

print 'Fin del programa'

se encuentra fuera de la estructura if.

Si la condición se verifica verdadera luego se ejecutan las instrucciones:

print nombreprint ' es menor de edad'

Es obligatorio luego de la condición del if disponer los dos puntos

if edad<18:

Page 5: Python02

Estructura condicional if (3/3)

También similar a otros lenguajes la estructura condicional if tiene una segunda parte que es el else, dicha sección se ejecuta si la condición se verifica falsa.

nombre='juan' edad=15 print nombre if edad<18:

print ' es menor de edad' else:

print ' es mayor de edad.' print 'Fin del programa'

Nuevamente tener en cuenta que las instrucciones que se indiquen por el else deben estar corridas a derecha (indentadas).

La palabra clave else requiere también los dos puntos

else:

Page 6: Python02

Problema propuestoGenerar un número aleatorio comprendido entre 1 y 20. Luego mostrar si el valor generado tiene uno o dos dígitos.Para generar un valor aleatorio hay una librería que debemos importar (veremos más adelante el concepto de módulos)import random Luego podemos llamar la función randint de dicho módulo, esta función requiere dos valores enteros y nos devuelve otro valor entero comprendido entre ellos (lo selecciona de forma aleatoria, es decir al azar)x=random.randint(1,20)

import randomx=random.randint(1,20)print xif x<10: print 'El valor generado tiene un digito'else: print 'El valor generado tiene dos digitos'

Page 7: Python02

Problema resuelto

Inicializar una variable con un valor entero comprendido entre 1 y 100. Generar luego un valor aleatorio también comprendido entre 1 y 100. Mostrar un mensaje si el valor generado coincide con el valor de la variable (en Python para ver si dos variables almacenan el mismo valor se utiliza el operador relacional == )

import random elegido=25 x=random.randint(1,100) print x if elegido==x:

print 'El valor generado coincide con la variable' else:

print 'El valor generado no coincide con la variable'

Page 8: Python02

Operadores relacionalesEn Python contamos con los siguientes operadores relacionales:

== Igualdad != Desigualdad < Menor <= Menor o igual > Mayor >= Mayor o igual

Cuando disponemos una condición en una estructura condicional debemos utilizar alguno de estos seis operadores relacionales.

Toda condición debe tener un operando o valor, luego un operador relacional y finalmente otro operando o valor.

Todas estas condiciones son válidas: if edad==18: if edad<=18: if edad!=50: if edad>=18: if valor1<valor2: if valor1>valor2:

Page 9: Python02

Problema resuelto

Inicializar dos variables con valores aleatorios comprendidos entre 1 y 10.Mostrar un mensaje si los dos valores generados son iguales.Mostrar un mensaje si el primer valor es menor a 5.Mostrar otro mensaje si el segundo valor es mayor a 5.

import randomvalor1=random.randint(1,10)valor2=random.randint(1,10)print 'Primer valor:'print valor1print 'Segundo valor:'print valor2if valor1==valor2: print 'Los dos valores son iguales.'if valor1<5: print 'El primer valor es inferior a 5.'if valor2>5: print 'El segundo valor es superior a 5.'

Page 10: Python02

Estructura condicional if anidada (1/3)

En ocasiones cuando hay más de dos caminos posibles es necesario implementar estructuras condicionales anidadas, es decir por la rama del verdadero o falso (else:) disponemos otras estructuras condicionales.

Debemos tener cuidado con la indentación del código para evitar errores.

Veamos un ejemplo que requiere utilizar estructuras condicionales anidadas.

Generaremos tres números aleatorios y luego imprimiremos el mayor de los tres:

Page 11: Python02

import random x1=random.randint(1,100) x2=random.randint(1,100) x3=random.randint(1,100) print x1, '-‘, x2, '-' , x3 print 'El mayor es:' if x1>x2:

if x1>x3: print x1

else: print x3

else: if x2>x3:

print x2 else:

print x3

Estructura condicional if anidada (2/3)

Page 12: Python02

Como podemos observar por el bloque del verdadero del primer if tenemos otra estructura condicional (debemos indentar cada estructura condicional):

if x1>x2: if x1>x3:

print x1 else:

print x3

Estructura condicional if anidada (3/3)

Page 13: Python02

Problema resueltoGenerar un valor aleatorio entre 1 y 1000. Luego imprimir un mensaje indicando cuantos dígitos tiene.

import random

x1=random.randint(1,1000)print x1

if x1<10: print 'Tiene 1 dígito'else: if x1<100: print 'Tiene 2 dígitos' else: if x1<1000: print 'Tiene 3 dígitos' else: print 'Tiene 4 dígitos'

Page 14: Python02

Problema Propuesto

Generar un valor aleatorio entre -10 y 10. Mostrar un mensaje si el valor generado es negativo, nulo o positivo.

Para generar un valor aleatorio en ese rango debemos plantear la siguiente expresión:

x=-10+random.randint(0,20)

import random x=-10+random.randint(0,20) print x if x<0:

print 'Numero negativo' else:

if x==0: print 'Numero nulo'

else: print 'Numero positivo'

Page 15: Python02

Operadores lógicos (1/3)

En Python contamos con los siguientes operadores lógicos:

and (y) or (o) not (no)

Los operadores lógicos nos permiten agrupar condiciones simples en una estructura condicional, esto nos facilita la implementación de algoritmos más compactos y comprensibles.

Cuando unimos dos condiciones simples con el operador lógico 'and' ambas condiciones deben verificarse como verdaderas para que la condición compuesta se verifique verdadera.

Page 16: Python02

Operadores lógicos (2/3)

Por ejemplo si tenemos que mostrar un mensaje si la edad de una persona está comprendida entre 12 y 18 años podemos plantearla con una única estructura condicional:

Estamos diciendo si la variable 'edad' tiene un valor mayor o igual a 12 y además la variable edad tiene un valor menor o igual a 18 luego ejecutar la rama del verdadero.

La condición anterior nos evita tener que implementar dos estructuras condicionales:

if edad>=12 and edad<=18: print 'Edad comprendida entre 12 y 18'

if edad>=12: if edad<=18:

print 'Edad comprendida entre 12 y 18'

Page 17: Python02

Operadores lógicos (3/3)

El operador lógico 'or' hace que con que alguna de las condiciones sea verdadera luego ejecute el bloque del verdadero.

Se ejecuta la rama del verdadero si al menos una de las dos variables es menor a 5. El operador not invierte el valor de una condición:

if x1<5 or x2<5:

if not x1>x2:

Si x1 no es mayor a x2 luego ejecuta la rama del verdadero de la estructura condicional.Podemos plantear condiciones con más de dos condiciones simples:

if x1<0 or x2<0 or x3<0:

Si x1 o x2 o x3 tienen un valor inferior a cero luego se ejecuta la rama del verdadero del if.

Page 18: Python02

Problema resueltoGenerar tres números aleatorios y luego imprimir el mayor de los tres. Emplear condiciones compuestas donde sea posible.

import random

x1=random.randint(1,100)x2=random.randint(1,100)x3=random.randint(1,100)print x1, '-‘, x2, '-‘, x3print 'El mayor es:'if x1>x2 and x1>x3: print x1else: if x2>x3: print x2 else: print x3

Page 19: Python02

Problema Propuesto

Generar 3 números aleatorios entre 1 y 100. Mostrar un mensaje si todos son superiores a 10.

import random x1=random.randint(1,100) x2=random.randint(1,100) x3=random.randint(1,100) print x1 print '-' print x2 print '-' print x3 if x1>10 and x2>10 and x3>10:

print 'Todos los valores son superiores a 10'

Page 20: Python02

Estructura condicional if-elif (1/2)

Esta estructura condicional es una forma más elegante de disponer estructuras condicionales anidadas.Veamos como lo hacemos con estructuras condicionales anidadas y luego utilizando la sintaxis if/elif: (problema: generar un número aleatorio entre 1 y 1000, luego imprimir la cantidad de dígitos del número generado)import random x=random.randint(1,1000) print x if x<10:

print 'Tiene 1 dígito' else:

if x<100: print 'Tiene 2 dígitos'

else: if x<1000:

print 'Tiene 3 dígitos' else:

print 'Tiene 4 dígitos'

Page 21: Python02

Estructura condicional if-elif (2/2)

Luego con la estructura condicional if/elif:

import random x=random.randint(1,1000) print x if x<10:

print 'Tiene 1 dígito' elif x<100:

print 'Tiene 2 dígitos' elif x<1000:

print 'Tiene 3 dígitos' else:

print 'Tiene 4 dígitos'

Page 22: Python02

Problema resueltoAlmacenar en una variable entera la nota de un alumno, luego mostrar un mensaje si está promocionado (nota>=14), regular (nota>=11) o reprobado (nota<11)

nota=15print 'Nota:'print nota

if nota>=14: print 'Promocionado'elif nota>=11: print 'Regular'else: print 'Reprobado'

Page 23: Python02

Problema Propuesto

Generar un valor aleatorio comprendido entre 1 y 5. Luego mostrar en castellano el valor generado.

import random x=random.randint(1,5) if x==1:

print 'uno' elif x==2:

print 'dos' elif x==3:

print 'tres' elif x==4:

print 'cuatro' elif x==5:

print 'cinco'

Page 24: Python02

Estructura repetitiva while (1/2)Las estructuras repetitivas nos permiten ejecutar un bloque de instrucciones varias veces, dependiendo de una condición.

La estructura while repite el bloque de instrucciones mientras la condición se verifique verdadera.

Si queremos mostrar los números del 1 al 100 con estructuras secuenciales el proceso es largo y engorroso, utilizando una estructura repetitiva el algoritmo es muy compacto:

print 'Números del 1 al 100:' x=1 while x<=100:

print x print '-' x=x+1

print 'Fin'

Page 25: Python02

Estructura repetitiva while (2/2)

Es importante recordar y remarcar que las instrucciones que se ejecutan en laestructura repetitiva while son todas las que se encuentran indentadas a la derecha (cuatro espacios más a la derecha de la instrucción while)

La variable x se inicializa previo a la estructura while con el valor 1. La primera vez que se ejecuta la condición del while se verifica verdadera, ya que 1 es menor o igual a 100.

Dentro de la estructura repetitiva mostramos el contenido de la variable x, luego imprimimos un guión y finalmente incrementamos la variable x con el valor actual más uno.

La impresión de la cadena 'Fin' se ejecuta una vez finalizada la estructura repetitivawhile.

Page 26: Python02

Problema resuelto

Mostrar la tabla de multiplicar del 2 (del 2 al 20) empleando una estructura repetitiva while.

x=2print 'Tabla del 2:'while x<=20: print x x=x+2

Page 27: Python02

Problema Propuesto

Generar un valor aleatorio entre 100 y 200. Luego mostrar los números comprendidos entre 1 y el valor generado.

import random x=random.randint(100,200) print 'Número final:' print x cont=1 while cont<=x:

print cont print '-' cont=cont+1

Page 28: Python02

BIBLIOGRAFÍA

Página personal de Guido van Rossum Libro texto del curso Página principal de PythonG Sitio principal de Python Zona de descarga de Python Matemáticas con código abierto y Python

Page 29: Python02