domingo, 27 de abril de 2025

Ejercicios condicionales. Aprende con Alf.

 

Ejercicio 1

Escribir un programa que pregunte al usuario su edad y muestre por pantalla si es mayor de edad o no.

 >>print("Inicio de codigo")
>>edad = int(input("Por favor ingrese su edad: "))
>>if edad >= 18:
>>    print("Es mayor de edad")
>>else:
>>    print("Es menor de edad")
>>print("Fin de codigo")

Respuesta:

>>>

Inicio de codigo
Por favor ingrese su edad: 17
Es menor de edad
Fin de codigo

 >>>

Ejercicio 2

Escribir un programa que almacene la cadena de caracteres contraseña en una variable, pregunte al usuario por la contraseña e imprima por pantalla si la contraseña introducida por el usuario coincide con la guardada en la variable sin tener en cuenta mayúsculas y minúsculas.

 

print("Inicio de codigo")
clave_guardada = 'contraseña'
clave = input("Por favor ingrese su contraseña: ")
if clave.lower() == clave_guardada.lower():
    print("La contraseña es correcta")
else:
    print("La contraseña es incorrecta")
print("Fin de codigo")
 
Respuesta:
Inicio de codigo
Por favor ingrese su contraseña: CONTRASEÑA
La contraseña es correcta
Fin de codigo
 
 

Ejercicio 3

Escribir un programa que pida al usuario dos números y muestre por pantalla su división. Si el divisor es cero el programa debe mostrar un error.

print('inicio de codigo') 

num_1 = int(input('Favor ingresar el primer numero': ))

num_2 = int(input('Favor ingresar el sefungo numero': )) 

if num_2 ==0:

print('error, la division por cero no es posible')

else:

division = num_1 /num_2 

print(division)

print('Fin de codigo')

 

Ejercicio 4

Escribir un programa que pida al usuario un número entero y muestre por pantalla

si es par o impar.

print('Inicio de codigo')

num = int(input('Favor ingresar un numero entero: '))

if num % 2 == 0:

print('El numero ingresado es par')

else:

print('El numero ingresado es impar')

print('Fin de codigo') 

Respuesta: 

Inicio de codigo
Favor ingresar un numero entero: 0
El numero ingresado es par
Fin de codigo
 
 

domingo, 20 de abril de 2025

Thinkcspy. Seleccion/ 7.4. Ejecución condicional: selección binaria

 

Para escribir programas útiles, casi siempre necesitamos la capacidad de verificar condiciones y cambiar el comportamiento del programa en consecuencia. Declaraciones de selección , a veces también conocido como declaraciones condicionales , danos esta habilidad. La forma más simple de selección es la Declaración if . Esto a veces se conoce como selección binaria Dado que hay dos posibles caminos de ejecución.

>>x = 15                                 # PPI: se asigna a la variable x el valor de 15 int

>>if x % 2 == 0:                    # PPI: si el residuo de dividir x por 2 es equivalente a 0 entonces
>>    print(x, "is even")         #  PPI: imprima (15) es par
>>else:                                  # PPI: sino
>>    print(x, "is odd")          # PPI: imprima (15) es impar


>>> Es impar

La sintaxis para un if La declaración se ve así:

if BOOLEAN EXPRESSION:
    STATEMENTS_1        # executed if condition evaluates to True
else:
    STATEMENTS_2        # executed if condition evaluates to False


La expresión booleana después del if La declaración se llama la condición. Si es cierto, entonces se ejecutan las declaraciones con sangría inmediatamente siguiente. Si no, entonces las declaraciones sangrado bajo el else La cláusula se ejecuta.

Como con la definición de función del último capítulo y otro compuesto declaraciones como for, el if La declaración consiste en una línea de encabezado y un cuerpo. El encabezado La línea comienza con la palabra clave if seguido de una expresión booleana y termina con un colon (:).

Las declaraciones más sangradas que siguen se llaman bloquear .

Cada una de las declaraciones dentro del primer bloque de declaraciones se ejecuta en orden si el booleano La expresión evalúa a True. Todo el primer bloque de declaraciones se omite si la expresión booleana se evalúa False, y en su lugar Todas las declaraciones bajo el else se ejecutan la cláusula.

No hay límite en el número de declaraciones que pueden aparecer bajo las dos cláusulas de un if Declaración, pero tiene que haber al menos una declaración en cada bloque.

Cada declaración compuesta incluye un encabezado y todas las siguientes declaraciones más indentadas en el bloque después del encabezado. El if - else la declaración es una declaración compuesta inusual porque tiene más de una parte al mismo nivel de sangría que el if título, (el else cláusula, con su propio bloque con sangría). 

 

Comprueba tu comprensión

¿Cuántas declaraciones pueden aparecer en cada bloque (el IF y el Else) en una declaración condicional?





Elegir uno

Actividad: 7.4.3 Opción múltiple (test_Question6_4_1)

¿Qué imprime el siguiente código (elige entre la salida A, B, C o nada)?

if 4 + 5 == 10:
    print("TRUE")
else:
    print("FALSE")




Elegir uno

Actividad: 7.4.4 Opción múltiple (test_Question6_4_2)

¿Qué imprime el siguiente código?

if 4 + 5 == 10:
    print("TRUE")
else:
    print("FALSE")
print("TRUE")
a. TRUE

b.
   TRUE
   FALSE

c.
   FALSE
   TRUE
d.
   TRUE
   FALSE
   TRUE




Elegir uno

Actividad: 7.4.5 Opción múltiple (test_Question6_4_3)

sábado, 19 de abril de 2025

Thinkcspy. Seleccion / 7.3 Precedencia de operadores

 

7.3. Precedencia de operadores

Ahora hemos agregado varios operadores adicionales a los que aprendimos en los capítulos anteriores. Es importante comprender cómo estos operadores se relacionan con los demás con respecto a la precedencia del operador. Python siempre evaluará primero los operadores aritméticos (** es más alto, luego multiplicación/división, luego suma/resta). Luego vienen los operadores relacionales. Finalmente, los operadores lógicos se realizan al final. Esto significa que la expresión x*5 >= 10 and y-6 <= 20 se evaluará para realizar primero la aritmética y luego verificar las relaciones. El and se hará último. Aunque muchos programadores pueden colocar paréntesis en las dos expresiones relacionales, no es necesario.

La siguiente tabla resume la precedencia discutida hasta ahora de más alta a más baja. Consulte la tabla de precedencia del operador para todos los operadores introducidos en este libro.

Nivel

Categoría

Operadores

7 (alto)

exponente

**

6

multiplicación

*,/,//,%

5

suma

+,-

4

relacional

== ,! =, <=,> =,>, <

3

lógico

no

2

lógico

y

1 (bajo)

lógico

o


Comprueba tu comprensión

¿Cuál de los siguientes expresa correctamente la precedencia de los operadores (usando paréntesis) en la siguiente expresión: 5*3> 10 y 4+6 == 11




Respuesta: A.

Thinkcspy. Seleccion / 7.2 Operadores lògicos

 

7.2. Operadores lógicos

Hay tres operadores lógicos : and, or, y not. El La semántica (significado) de estos operadores es similar a su significado en inglés. Por ejemplo, x > 0 and x < 10 es cierto solo si x es mayor que 0 y Al mismo tiempo, X es menos de 10. ¿Cómo describirías esto en palabras? Dirías que X está entre 0 y 10, sin incluir los puntos finales.

n % 2 == 0 or n % 3 == 0 es cierto si alguna de las condiciones es verdad es decir, si el número es divisible por 2 o divisible por 3. En este caso, uno u otro, o otro Ambas partes deben ser ciertas para que el resultado sea verdadero.

Finalmente, el not El operador niega una expresión booleana, por lo tanto not  x > y es cierto si x > y es falso, es decir, si x es menor o igual a y

>> x = 5                                     # PPI: Se define la vairable x y se le asigna el valor de 5
>>print(x > 0 and x < 10)        # PPI: debe imprimir True porque amabas condiciones lo son

>>n = 25                                  # PPI: se define una segunda variable n y se le asigna 25
>>print(n % 2 == 0 or n % 3 == 0)    #PPI: deberia imprimir false

>>>

True
False

Al tratar de mostrar cómo funcionan los operadores lógicos, los informáticos y los matemáticos usarán tanto Tablas de verdad . Una tabla de verdad es una pequeña tabla que enumera todas las entradas posibles en sus columnas izquierdas y Luego mostrará la salida de su operador lógico particular en la columna derecha. Tomar la lógica operador and Por ejemplo:




a

b

a and b

T

T

T

T

F

F

F

T

F

F

F

F

La t en la tabla representa True Mientras la F significa False. Observe que cuando A y B son ambos True, el operador logcial and salidas True. Así es exactamente como Normalmente usamos "y" en la conversación diaria. Aquí están el resto de los operadores:







a

b

a and b

a or b

not a

not b

T

T

T

T

F

F

T

F

F

T

F

T

F

T

F

T

T

F

F

F

F

F

T

T

Además, Google ha proporcionado este breve video que muestra diferentes operadores lógicos:

 

En el video, cada letra es representativa de un operador lógico y solo muestra su color cuando el correspondiente X o Y se muestra en la segunda g . Si echas un vistazo a Xor, notarás Solo es colorido cuando X o Y se muestra Esto se llama exclusive or, que no estaremos usando.

¡ADVERTENCIA!

Hay un error muy común que ocurre cuando los programadores intentan escribir expresiones booleanas. Por ejemplo, ¿qué pasa si tenemos una variable? number y queremos verificar si su valor es 5,6 o 7. En palabras podríamos decir: "Número igual a 5 o 6 o 7". Sin embargo, si traducimos esto a Python, number == 5 or 6 or 7, no será correcto. El or El operador debe unirse a los resultados de tres controles de igualdad. La forma correcta de escribir esto es number == 5 or number == 6 or number == 7. Esto puede parecer una gran cantidad de escritura, pero es absolutamente necesario. No puedes tomar un atajo.


¿Cuál es una expresión de Python correcta para verificar si un número almacenado en una variable x está entre 0 y 5?



Respuesta: C.

Digamos que se está registrando para las clases del próximo semestre. Tienes la opción A, que es tu clase de arte y la opción B, que es tu clase de matemáticas. Necesitas ambos, pero es una carrera entre el tiempo y la suerte. Si termina registrándose a tiempo para la opción A, pero no obtiene su elección B, ¿qué operadores lógicos serían verdaderos?




Respuesta: B y D

 

7.2.1. Opuestos lógicos

Cada uno de los seis operadores relacionales tiene un opuesto lógico: por ejemplo, supongamos que podemos obtener una licencia de conducir cuando nuestra edad es mayor o igual a 17, no obtener la licencia de conducir cuando tenemos menos de 17 años.

Operador

Definición

Opuestos lógicos

==

Igual a

!=

!=

No es igual a

==

<

Menos que

>=

<=

Menos o igual a

>

>

Más que

<=

>=

Mayor o igual a

<

Comprender estos opuestos lógicos nos permite a veces deshacernos not operadores. not Los operadores a menudo son bastante difíciles de leer en el código de computadora, y nuestras intenciones generalmente serán más claras si podemos eliminarlos.

Por ejemplo, si escribimos esta pitón:

>>if not (age >= 17):
>>   print("Hey, you're too young to get a driving licence!")

Probablemente sería más claro usar las leyes de simplificación y escribir en su lugar:

>>if age < 17:
>>   print("Hey, you're too young to get a driving licence!")

Dos poderosas leyes de simplificación (llamadas leyes de De Morgan) que a menudo son útiles cuando se trata de expresiones booleanas complicadas son:

not (x and y)  ==  (not x) or (not y)
not (x or y)   ==  (not x) and (not y)

Por ejemplo, suponga que desea actualizar su teléfono; Sin embargo, su teléfono solo se actualizará si tiene al menos un 50% de duración de la batería y el 15% de su almacenamiento disponible. Mientras miramos el código de Python para esto, vemos:

if not ((phone_charge >= 0.50) and (phone_storage >= .15)):
   print("You cannot restart your phone. Battery too low or not enough free space.")
else:
   print("Updating now...Several restarts may be required.")

La aplicación de reglas de opuestos lógicos nos permitiría reelaborar la condición de una forma (quizás) más fácil de entender como esta:

if (phone_charge < 0.50) or (phone_storage < .15):
   print("You cannot restart your phone. Battery too low or not enough free space.")
else:
   print("Updating now...Several restarts may be required.")

También podríamos deshacernos del not Al cambiar el theny else partes del condicional. Así que aquí hay una tercera versión, también equivalente:

if (phone_charge >= 0.50) and (phone_storage >= .15):
   print("Updating now...Several restarts may be required.")
else:
   print("You cannot restart your phone. Battery too low or not enough free space.")

Esta versión es probablemente la mejor de los tres, porque coincide muy bien con la declaración inicial en inglés. La claridad de nuestro código (para otros humanos), y facilita ver que el código hace lo que se esperaba siempre debería ser una alta prioridad.

A medida que se desarrollen nuestras habilidades de programación, encontraremos que tenemos más de una forma de resolver cualquier problema. buenos programas diseñan . Tomamos decisiones que favorecen la claridad, la simplicidad y la elegancia. El arquitecto de software dice mucho sobre lo que hacemos - somos arquitectos quienes diseñan nuestros productos para equilibrar la belleza, la funcionalidad, la simplicidad y la claridad en nuestras creaciones. 

 

Thinkcspy. Seleccion / 7.1 valores y expresiones boleanas

 

7.1. VALORES Y EXPRESIONES BOLEANAS

 

Se llama al tipo de Python para almacenar valores verdaderos y falsos bool, nombrado Después del matemático británico, George Boole. George Boole creó booleano Álgebra , que es la base de toda la aritmética informática moderna.

Solo hay dos valores booleanos . Ellos son Truey False. Capitalización es importante, ya que true y false no son valores booleanos (recuerde que Python es el caso sensible). 

>>print(True)
>>print(type(True))
>>print(type(False))

>>>True
>>> <class 'bool'>
>>> <class 'bool'>

Nota

¡Los valores booleanos no son cadenas!

Es extremadamente importante darse cuenta de que verdadero y falso no son cadenas. Ellos no son Rodeados de comillas. Son los únicos dos valores en el tipo de datos bool. Eche un vistazo de cerca a los tipos que se muestran a continuación.

>>print(type(True))
>>print(type("True"))

>>>

<class 'bool'>
<class 'str'>

Una expresión booleana es una expresión que evalúa a un valor booleano. El operador de igualdad, ==, compara dos valores y produce un valor booleano relacionado con si los dos valores son iguales entre sí. 

>>print(5 == 5)

>>print(5 == 6)

>>j = "hel"
>>print(j + "lo" == "hello")

>>>

True
False
True

En la primera declaración, los dos operandos son iguales, por lo que la expresión evalúa a True. En la segunda declaración, 5 no es igual a 6, por lo que tenemos False.

El == El operador es uno de los seis comunes operadores de comparación ; Los otros son:

x != y               # x is not equal to y, x es diferente de y.
x > y                # x is greater than y, x es mayor que y.
x < y                # x is less than y,    x es menor que y.
x >= y               # x is greater than or equal to y, x es mayor o igual que y.
x <= y               # x is less than or equal to y, x es menor o igual que y.

Aunque estas operaciones probablemente te son familiares, los símbolos de Python son diferente de los símbolos matemáticos. Un error común es usar un solo signo igual ( =) en lugar de un signo doble igual ( ==). Recuerda que = es un operador de asignación y == es un operador de comparación. Además, no hay tal cosa como =<o =>.

Tenga en cuenta también que una prueba de igualdad es simétrica, pero la asignación no lo es. Por ejemplo, si a == 7 entonces 7 == a. Pero en Python, la declaración a = 7 es legal y 7 = a no lo es. (¿Puedes explicar por qué?)

Comentario de PPI:

La asignación (=) en Python se da de derecha a izquierda y no al revés, a = 7, a la variable a, se le lleva o se le asigna el valor de 7. Para hacerlo mas entendible pensemos esto: tenemos una caja de cartón, a la caja le pegamos un rotulo en la cara frontal, dentro de la caja almacenamos el objeto 7 y en el rotulo identificamos la caja como a. a es el nombre de la variable (caja) y 7 es el objeto contenido en ella y no al revés.

Ademas recordemos que en Python las variables se pueden nombrar como letras o combinación de letras y números pero no se pueden nombrar como números solos y el nombre de la variable siempre esta a la izquierda del símbolo de asignación. variable = objeto

Comprueba tu comprensión

¿Cuál de las siguientes es una expresión booleana? Seleccione todo lo que se aplique.






Respuesta: A, B, D.

Thinkcspy. 7. Selección (Condicional) Indice del capitulo

 

7. Seleccion

Selección

  • 7.1. Valores booleanos y expresiones booleanas
  • 7.2. Operadores lógicos
    • 7.2.1. Opuestos lógicos
  • 7.3. Precedencia de operadores
  • 7.4. Ejecución condicional: selección binaria
  • 7.5. Omitir la delse : selección unary
  • 7.6. Condicionales anidados
  • 7.7. Condicionales encadenados
  • 7.8. Funciones booleanas
    • 7.8.1. Más pruebas unitarias
  • 7.9. Glosario
  • 7.10. Ceremonias

Thinkcspy. Funciones / 6.12 Glosario del capitulo

 

6.12. Glossary

función de chatterbox

Una función que interactúa con el usuario (usando inputo print) cuando no debería. Funciones silenciosas que solo convierten sus argumentos de entrada en Los resultados de su salida suelen ser los más útiles.

composición (de funciones)

Llamar a una función desde el cuerpo de otro, o usar el Valor de devolución de una función como argumento a la llamada de otro.

Código muerto

Parte de un programa que nunca se puede ejecutar, a menudo porque parece después de un return declaración.

función fructífera

Una función que produce un valor de retorno en lugar de None.

Desarrollo incremental

Un plan de desarrollo de programas destinado a simplificar la depuración agregando y Prueba solo una pequeña cantidad de código a la vez.

None

Un valor especial de Python. Un uso en Python es que se devuelve por funciones que no ejecutan una declaración de devolución con un argumento de retorno.

Valor de retorno

El valor proporcionado como resultado de una llamada de función.

scaffolding

Código que se utiliza durante el desarrollo del programa para ayudar con el desarrollo y depuración. El código de prueba unitario que agregamos en este capítulo son Ejemplos de andamio.

variable temporal

Una variable utilizada para almacenar un valor intermedio en un complejo cálculo.

Thinkcspy. Funciones / 6.11 Un grafico de barras dibujado en turtle

 

6.11. Un gráfico de barra de tortuga

Recuerde de nuestra discusión de los módulos que había varias cosas que las tortugas pueden hacer. Aquí hay un par de trucos más (recuerde que todos se describen en la documentación del módulo).

  • Podemos obtener una tortuga para mostrar texto en el lienzo en la posición actual de la tortuga. Se llama al método write. Por ejemplo, alex.write("Hello") Escribiría la cadena Hello en la posición actual.

  • Uno puede llenar una forma (círculo, semicírculo, triángulo, etc.) con un color de relleno. Es un proceso de dos pasos. Primero llamas al método begin_fill, Por ejemplo alex.begin_fill(). Luego dibujas la forma. Finalmente, llamas end_fill ( alex.end_fill()).

  • Anteriormente hemos establecido el color de nuestra tortuga; ahora también podemos establecer su color de relleno, que no necesita ser lo mismo que la tortuga y el color de la pluma. Para hacer esto, utilizamos un método llamado fillcolor, Por ejemplo, alex.fillcolor("red").

Ok, entonces, ¿podemos hacer que Tess dibuje un gráfico de barras? Comencemos con algunos datos para ser trazados,

xs = [48, 117, 200, 240, 160, 260, 220]

En correspondencia con cada medición de datos, dibujaremos un rectángulo simple de esa altura, con un ancho fijo. Aquí hay una versión simplificada de lo que nos gustaría crear. 

../_images/tess_bar_1.png 

Podemos ver rápidamente que dibujar una barra será similar a dibujar un rectángulo o un cuadrado. Dado que tendremos que hacerlo Varias veces, tiene sentido crear una función, drawBar, que necesitará una tortuga y la altura de la barra. Asumiremos que el ancho de la barra será de 40 unidades. Una vez que tenemos la función, podemos usar un bucle básico para procesar la lista de valores de datos.

>>def drawBar(t, height):
    """ Get turtle t to draw one bar, of height. """
>>    t.left(90)               # Point up
>>    t.forward(height)        # Draw up the left side
>>    t.right(90)
>>    t.forward(40)            # width of bar, along the top
>>    t.right(90)
>>    t.forward(height)        # And down again!
>>    t.left(90)               # put the turtle facing the way we found it.

...
>>for v in xs:                 # assume xs and tess are ready
>>    drawBar(tess, v)


¡Es un buen comienzo! Lo importante aquí fue la fusión mental. Para resolver el problema, primero lo dividimos en piezas más pequeñas. En particular, Nuestro trozo es dibujar una barra. Luego implementamos ese fragmento con una función. Entonces, para el todo Gráfico, repetidamente llamamos nuestra función.

A continuación, en la parte superior de cada barra, imprimiremos el valor de los datos. Haremos esto en el cuerpo de drawBar Al agregar t.write(str(height)) Como la nueva cuarta línea del cuerpo. Tenga en cuenta que tuvimos que girar el número en una cadena. Finalmente, agregaremos los dos métodos necesarios para llenar cada barra.

El único problema restante está relacionado con el hecho de que nuestra tortuga vive en un mundo donde la posición (0,0) está en el centro del lienzo de dibujo. En este problema, ayudaría si (0,0) estuvieran en la esquina inferior izquierda. Para resolver esto podemos usar nuestro setworldcoordinates Método para rescalar la ventana. Mientras lo hacemos, debemos hacer que la ventana se ajuste a los datos. La barra más alta corresponderá al valor máximo de datos. El ancho de la ventana deberá ser proporcional al número de barras (el número de valores de datos) donde cada uno tiene un ancho de 40. Usando esta información, podemos calcular la coordenada sistema que tiene sentido para el conjunto de datos. Para que se vea bien, agregaremos un borde de 10 unidades alrededor de las barras.

Aquí está el programa completo. Pruébelo y luego cambie los datos para ver que puede adaptarse a los nuevos valores. Tenga en cuenta también que Hemos almacenado los valores de datos en una lista y utilizamos algunas funciones de lista. Tendremos mucho más que decir sobre las listas en un capítulo posterior.

>>import turtle

>>def drawBar(t, height):
    """ Get turtle t to draw one bar, of height. """
>>    t.begin_fill()               # start filling this shape
>>    t.left(90)
>>    t.forward(height)
>>    t.write(str(height))
>>    t.right(90)
>>    t.forward(40)
>>    t.right(90)
>>    t.forward(height)
>>    t.left(90)
>>    t.end_fill()                 # stop filling this shape



>>xs = [48, 117, 200, 240, 160, 260, 220]  # here is the data
>>maxheight = max(xs)
>>numbars = len(xs)
>>border = 10

>>wn = turtle.Screen()             # Set up the window and its attributes
>>wn.setworldcoordinates(0-border, 0-border, 40*numbars+border, maxheight+border)
>>wn.bgcolor("lightgreen")

>>tess = turtle.Turtle()           # create tess and set some attributes
>>tess.color("blue")
>>tess.fillcolor("red")
>>tess.pensize(3)



>>for a in xs:
>>    drawBar(tess, a)

>>wn.exitonclick()


 PPI: La salida del código anterior es la siguiente:

 

Este código es bastante conciso, pero cada etiqueta de altura está parcialmente cubierta por la parte superior segmento de su bar. ¿Puedes modificar el drawBar código, moviendo ligeramente la etiqueta ¿Pero no cambiar la barra? Sugerencia: la etiqueta no se puede dibujar durante la secuencia de relleno de polígono.




Entradas recientes

Articulo: Predecir la resistencia a la traccion de un material con Python

  Desde ingeniero de materiales hasta desarrollador de aprendizaje automático: predecir la resistencia a la tracción con Python y Web Tech...

Entradas Populares