init python_by_example
This commit is contained in:
commit
fd9f7f83d0
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
__pycache__/
|
21
README.md
Normal file
21
README.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Python by Example
|
||||||
|
|
||||||
|
Guia interactiva con la resolución de los retos propuestos en el libro
|
||||||
|
[Python by Example](https://www.google.cl/books/edition/Python_by_Example/gDGdDwAAQBAJ)
|
||||||
|
de *Nichola Lacey*
|
||||||
|
|
||||||
|
## Retos básicos
|
||||||
|
|
||||||
|
- [001-011](./basic/basic01.py)
|
||||||
|
- [012-019](./basic/basic02.py)
|
||||||
|
- [020-026](./basic/basic03.py)
|
||||||
|
- [027-034](./basic/basic04.py)
|
||||||
|
|
||||||
|
## Uso
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://gitea.kickto.net/devfzn/python_by_example.git
|
||||||
|
|
||||||
|
cd python_by_example
|
||||||
|
python main.py
|
||||||
|
```
|
0
__init__.py
Normal file
0
__init__.py
Normal file
0
basic/__init__.py
Normal file
0
basic/__init__.py
Normal file
171
basic/basic.py
Normal file
171
basic/basic.py
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
from . import basic01 as ex01
|
||||||
|
from . import basic02 as ex02
|
||||||
|
from . import basic03 as ex03
|
||||||
|
from . import basic04 as ex04
|
||||||
|
from common.common import (
|
||||||
|
print_challenges,
|
||||||
|
user_input,
|
||||||
|
run_func,
|
||||||
|
clear
|
||||||
|
)
|
||||||
|
|
||||||
|
def challenges_sublist():
|
||||||
|
choices = 4
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
selection = user_input(choices)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
challenges01()
|
||||||
|
case 2:
|
||||||
|
challenges02()
|
||||||
|
case 3:
|
||||||
|
challenges03()
|
||||||
|
case 4:
|
||||||
|
challenges04()
|
||||||
|
case 5:
|
||||||
|
pass
|
||||||
|
case 6:
|
||||||
|
pass
|
||||||
|
case 7:
|
||||||
|
pass
|
||||||
|
case 8:
|
||||||
|
pass
|
||||||
|
case 9:
|
||||||
|
pass
|
||||||
|
case 10:
|
||||||
|
pass
|
||||||
|
case 11:
|
||||||
|
pass
|
||||||
|
case 'v':
|
||||||
|
return
|
||||||
|
case 's':
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
continue
|
||||||
|
|
||||||
|
def challenges01():
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
i, ex1 = print_challenges(ex01.basics_001)
|
||||||
|
selection = user_input(i)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
run_func(ex1.hola)
|
||||||
|
case 2:
|
||||||
|
run_func(ex1.hola2)
|
||||||
|
case 3:
|
||||||
|
run_func(ex1.pez)
|
||||||
|
case 4:
|
||||||
|
run_func(ex1.dos_nums)
|
||||||
|
case 5:
|
||||||
|
run_func(ex1.tres_nums)
|
||||||
|
case 6:
|
||||||
|
run_func(ex1.pizza)
|
||||||
|
case 7:
|
||||||
|
run_func(ex1.next_age)
|
||||||
|
case 8:
|
||||||
|
run_func(ex1.a_medias)
|
||||||
|
case 9:
|
||||||
|
run_func(ex1.tiempos)
|
||||||
|
case 10:
|
||||||
|
run_func(ex1.pounds)
|
||||||
|
case 11:
|
||||||
|
run_func(ex1.cabe)
|
||||||
|
case 'v':
|
||||||
|
return
|
||||||
|
case 's':
|
||||||
|
select_ok = True
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
continue
|
||||||
|
|
||||||
|
def challenges02():
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
i, ex2 = print_challenges(ex02.basics_002)
|
||||||
|
selection = user_input(i)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
run_func(ex2.mayor)
|
||||||
|
case 2:
|
||||||
|
run_func(ex2.muy_alto)
|
||||||
|
case 3:
|
||||||
|
run_func(ex2.gracias)
|
||||||
|
case 4:
|
||||||
|
run_func(ex2.fav_color)
|
||||||
|
case 5:
|
||||||
|
run_func(ex2.clima)
|
||||||
|
case 6:
|
||||||
|
run_func(ex2.edad_conducir)
|
||||||
|
case 7:
|
||||||
|
run_func(ex2.alto_bajo)
|
||||||
|
case 8:
|
||||||
|
run_func(ex2.uno_dos_tres)
|
||||||
|
case 'v':
|
||||||
|
return
|
||||||
|
case 's':
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
continue
|
||||||
|
|
||||||
|
def challenges03():
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
i, ex3 = print_challenges(ex03.basics_003)
|
||||||
|
selection = user_input(i)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
run_func(ex3.name_length)
|
||||||
|
case 2:
|
||||||
|
run_func(ex3.fullname_length)
|
||||||
|
case 3:
|
||||||
|
run_func(ex3.full_name_lower)
|
||||||
|
case 4:
|
||||||
|
run_func(ex3.nursery)
|
||||||
|
case 5:
|
||||||
|
run_func(ex3.any_mayus)
|
||||||
|
case 6:
|
||||||
|
run_func(ex3.mambo_name)
|
||||||
|
case 7:
|
||||||
|
run_func(ex3.pig_latin)
|
||||||
|
case 'v':
|
||||||
|
return
|
||||||
|
case 's':
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
continue
|
||||||
|
|
||||||
|
def challenges04():
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
i, ex4 = print_challenges(ex04.basics_004)
|
||||||
|
selection = user_input(i)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
run_func(ex4.decims)
|
||||||
|
case 2:
|
||||||
|
run_func(ex4.decims_round)
|
||||||
|
case 3:
|
||||||
|
run_func(ex4.square_root)
|
||||||
|
case 4:
|
||||||
|
run_func(ex4.pi_round)
|
||||||
|
case 5:
|
||||||
|
run_func(ex4.circle_area)
|
||||||
|
case 6:
|
||||||
|
run_func(ex4.cyl_vol)
|
||||||
|
case 7:
|
||||||
|
run_func(ex4.friendly_div)
|
||||||
|
case 8:
|
||||||
|
run_func(ex4.circ_trian)
|
||||||
|
case 'v':
|
||||||
|
return
|
||||||
|
case 's':
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
continue
|
89
basic/basic01.py
Normal file
89
basic/basic01.py
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
class basics_001:
|
||||||
|
|
||||||
|
def hola(self):
|
||||||
|
"Ask for the user's first name and display the output message"
|
||||||
|
nombre = input("Ingresa tu primer nombre: ")
|
||||||
|
print(f"Hola {nombre}")
|
||||||
|
|
||||||
|
def hola2(self):
|
||||||
|
"""Ask for the user’s first name and then ask for their surname
|
||||||
|
and display the output message Hello [First Name] [Surname]."""
|
||||||
|
nombre = input("Ingresa tu primer nombre: ")
|
||||||
|
apellido = input("Ingresa tu apellido: ")
|
||||||
|
print(f"Hola {nombre} {apellido}")
|
||||||
|
|
||||||
|
def pez(self):
|
||||||
|
"""Write code that will display the joke \"What do you call a bear
|
||||||
|
with no teeth?\" and on the next line display the answer \"A gummy bear!\"
|
||||||
|
Try to create it using only one line of code."""
|
||||||
|
print("¿Que es algo y nada a la vez?\nEl pez")
|
||||||
|
|
||||||
|
def dos_nums(self):
|
||||||
|
"""Ask the user to enter two numbers. Add them together and display
|
||||||
|
the answer as The total is [answer]."""
|
||||||
|
print("Ingresa dos números")
|
||||||
|
num_a = int(input("Primer número: "))
|
||||||
|
num_b = int(input("Segundo número: "))
|
||||||
|
print(f"{num_a} + {num_b} = {num_a+num_b}")
|
||||||
|
|
||||||
|
def tres_nums(self):
|
||||||
|
"""Ask the user to enter three numbers. Add together the first two
|
||||||
|
numbers and then multiply this total by the third. Display the answer as
|
||||||
|
The answer is [answer]."""
|
||||||
|
print("Ingresa tres números")
|
||||||
|
num_a = int(input("Primer número: "))
|
||||||
|
num_b = int(input("Segundo número: "))
|
||||||
|
num_c = int(input("Tercer número: "))
|
||||||
|
res = (num_a+num_b)*num_c
|
||||||
|
print(f"({num_a} + {num_b}) x {num_c} = {res}")
|
||||||
|
|
||||||
|
def pizza(self):
|
||||||
|
"""Ask how many slices of pizza the user started with and ask how
|
||||||
|
many slices they have eaten. Work out how many slices they have left and
|
||||||
|
display the answer in a user-friendly format."""
|
||||||
|
num_a = int(input("¿Cuantos pedazos de pizza tenías?: "))
|
||||||
|
num_b = int(input("¿Cuantos pedazos de pizza comiste?: "))
|
||||||
|
print(f"Aún quedan {num_a-num_b} pedazos")
|
||||||
|
|
||||||
|
def next_age(self):
|
||||||
|
"""Ask the user for their name and their age. Add 1 to their age
|
||||||
|
and display the output [Name] next birthday you will be [new age]."""
|
||||||
|
name = input("¿Cual es tu nombre?: ")
|
||||||
|
age = int(input("¿Que edad tienes?: "))
|
||||||
|
print(f"{name} en tu próximo cumpleaños tendrás {age+1}")
|
||||||
|
|
||||||
|
def a_medias(self):
|
||||||
|
"""Ask for the total price of the bill, then ask how many diners
|
||||||
|
there are. Divide the total bill by the number of diners and show how
|
||||||
|
much each person must pay."""
|
||||||
|
total = int(input("¿Cuanto es el total de la cuenta?: "))
|
||||||
|
personas = int(input("¿Cuantas personas son?: "))
|
||||||
|
print(f"Cada uno debe pagar ${total/personas}")
|
||||||
|
|
||||||
|
def tiempos(self):
|
||||||
|
"""Write a program that will ask for a number of days and then will
|
||||||
|
show how many hours, minutes and seconds are in that number of days."""
|
||||||
|
dias = int(input("Ingresa una cantidad de días: "))
|
||||||
|
horas = dias*24
|
||||||
|
minutos = horas*60
|
||||||
|
segundos = minutos*60
|
||||||
|
print(f"{dias} Días es equivalente a {horas} horas, "
|
||||||
|
+f"o {minutos} minutos, o {segundos} segundos.")
|
||||||
|
|
||||||
|
def pounds(self):
|
||||||
|
"""There are 2,204 pounds in a kilogram. Ask the user to enter a
|
||||||
|
weight in kilograms and convert it to pounds."""
|
||||||
|
peso = int(input("Ingresa un peso en Kilogramos: "))
|
||||||
|
libras = peso*2.204
|
||||||
|
print(f"{peso} kilogramos equivalen a {libras} libras")
|
||||||
|
|
||||||
|
def cabe(self):
|
||||||
|
"""Task the user to enter a number over 100 and then enter a number
|
||||||
|
under 10 and tell them how many times the smaller number goes into the
|
||||||
|
larger number in a user-friendly format."""
|
||||||
|
num, num2 = 0, 100
|
||||||
|
while num <= 100:
|
||||||
|
num = int(input("Ingresa un número mayor que 100: "))
|
||||||
|
while num2 >= 10:
|
||||||
|
num2 = int(input("Ingresa un número menor que 10: "))
|
||||||
|
print(f"{num2} cabe {num//num2} veces en {num}")
|
104
basic/basic02.py
Normal file
104
basic/basic02.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
class basics_002():
|
||||||
|
|
||||||
|
def mayor(self):
|
||||||
|
"""Ask for two numbers. If the first one is larger than the second, display
|
||||||
|
the second number first and then the first number, otherwise show the first
|
||||||
|
number first and then the second."""
|
||||||
|
num_1 = int(input("Ingresa un número :"))
|
||||||
|
num_2 = int(input("Ingresa otro número :"))
|
||||||
|
if num_1 > num_2:
|
||||||
|
print(f"{num_2} {num_1}")
|
||||||
|
elif num_1 < num_2:
|
||||||
|
print(f"{num_1} {num_2}")
|
||||||
|
else:
|
||||||
|
print(f"{num_1} = {num_2}")
|
||||||
|
|
||||||
|
def muy_alto(self):
|
||||||
|
"""Ask the user to enter a number that is under 20. If they enter a number that
|
||||||
|
is 20 or more, display the message “Too high”, otherwise display “Thank you”."""
|
||||||
|
num = int(input("Ingresa un número menor que 20: "))
|
||||||
|
if num >= 20:
|
||||||
|
print("Muy Alto!")
|
||||||
|
else:
|
||||||
|
print("Gracias")
|
||||||
|
|
||||||
|
def gracias(self):
|
||||||
|
"""Ask the user to enter a number between 10 and 20 (inclusive). If they enter a
|
||||||
|
number within this range, display the message “Thank you”, otherwise display the
|
||||||
|
message “Incorrect answer”."""
|
||||||
|
num = int(input("Ingresa un número entre 10 y 20: "))
|
||||||
|
if 10 <= num <= 20:
|
||||||
|
print("Gracias")
|
||||||
|
else:
|
||||||
|
print("El número no es válido")
|
||||||
|
|
||||||
|
def fav_color(self):
|
||||||
|
"""Ask the user to enter their favourite colour. If they enter “red”, “RED” or
|
||||||
|
“Red” display the message “I like red too”, otherwise display the message
|
||||||
|
“I don’t like [colour], I prefer red”."""
|
||||||
|
color = input("¿Cual es tu color favorito?: ")
|
||||||
|
match color.lower():
|
||||||
|
case "rojo":
|
||||||
|
print(f"A mi también me gusta el {color.capitalize()}")
|
||||||
|
case _:
|
||||||
|
print(f"No me gusta el {color.capitalize()}, prefiero el Rojo")
|
||||||
|
|
||||||
|
def clima(self):
|
||||||
|
"""Ask the user if it is raining and convert their answer to lower case
|
||||||
|
so it doesn’t matter what case they type it in. If they answer “yes”,
|
||||||
|
ask if it is windy. If they answer “yes” to this second question,
|
||||||
|
display the answer “It is too windy for an umbrella”, otherwise
|
||||||
|
display the message “Take an umbrella”. If they did not answer yes
|
||||||
|
to the first question, display the answer “Enjoy your day”."""
|
||||||
|
llueve = input("¿Está lloviendo?: ").lower()
|
||||||
|
if llueve == "si":
|
||||||
|
viento = input("¿Hay viento?: ").lower()
|
||||||
|
if viento == "si":
|
||||||
|
print("Es mala idea llevar paraguas")
|
||||||
|
else:
|
||||||
|
print("Lleva tu paraguas")
|
||||||
|
else:
|
||||||
|
print("Disfruta del día")
|
||||||
|
|
||||||
|
def edad_conducir(self):
|
||||||
|
"""Ask the user’s age. If they are 18 or over, display the message \"You
|
||||||
|
can vote\", if they are aged 17, display the message \"You can learn to
|
||||||
|
drive\", if they are 16, display the message \"You can buy a lottery
|
||||||
|
ticket\", if they are under 16, display the message \"You can go
|
||||||
|
Trick-or-Treating\"."""
|
||||||
|
edad = int(input("Ingresa tu edad: "))
|
||||||
|
if edad >= 18:
|
||||||
|
print("Puedes votar")
|
||||||
|
if edad == 17:
|
||||||
|
print("Puedes aprender a conducir")
|
||||||
|
if edad == 16:
|
||||||
|
print("Puedes comprar un ticket de azar")
|
||||||
|
if edad < 16:
|
||||||
|
print("Puedes salir ir jugar en la arena")
|
||||||
|
|
||||||
|
def alto_bajo(self):
|
||||||
|
"""Ask the user to enter a number. If it is under 10, display the message
|
||||||
|
\"Too low\", if their number is between 10 and 20, display \"Correct\",
|
||||||
|
otherwise display \"Too high\""""
|
||||||
|
num = int(input("Ingresa un número: "))
|
||||||
|
if num < 10:
|
||||||
|
print("El número es muy bajo")
|
||||||
|
elif 10 <= num <= 20:
|
||||||
|
print("Correcto")
|
||||||
|
else:
|
||||||
|
print("Muy alto")
|
||||||
|
|
||||||
|
def uno_dos_tres(self):
|
||||||
|
"""Ask the user to enter 1, 2 or 3. If they enter a 1, display the message
|
||||||
|
\"Thank you\", if they enter a 2, display \"Well done\", if they enter a 3,
|
||||||
|
display \"Correct\". If they enter anything else, display \"Error message\"."""
|
||||||
|
num = int(input("Ingresa 1 , 2 o 3: "))
|
||||||
|
match num:
|
||||||
|
case 1:
|
||||||
|
print("Gracias")
|
||||||
|
case 2:
|
||||||
|
print("Bién hecho")
|
||||||
|
case 3:
|
||||||
|
print("Correcto")
|
||||||
|
case _:
|
||||||
|
print("Error")
|
69
basic/basic03.py
Normal file
69
basic/basic03.py
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
class basics_003:
|
||||||
|
|
||||||
|
def name_length(self):
|
||||||
|
"""Ask the user to enter their first name and then display the length of
|
||||||
|
their name."""
|
||||||
|
name = input("Ingresa tu primer nombre: ")
|
||||||
|
print(f"{name} tiene {len(name)} letras")
|
||||||
|
|
||||||
|
def fullname_length(self):
|
||||||
|
"""Ask the user to enter their first name and then ask them to enter
|
||||||
|
their surname. Join them together with a space between and display the
|
||||||
|
name and the length of whole name."""
|
||||||
|
name = input("Ingresa tu primer nombre: ")
|
||||||
|
surname = input("Ingresa tu apellido: ")
|
||||||
|
length = len(name) + len(surname)
|
||||||
|
print(f"\'{name} {surname}\' tiene {length} letras")
|
||||||
|
|
||||||
|
def full_name_lower(self):
|
||||||
|
"""Ask the user to enter their first name and surname in lower case.
|
||||||
|
Change the case to title case and join them together. Display the
|
||||||
|
finished result."""
|
||||||
|
name = input("Ingresa tu primer nombre en minúsculas: ").title()
|
||||||
|
surname = input("Ingresa tu apellido en minúsculas: ").title()
|
||||||
|
print(f"{name} {surname}")
|
||||||
|
|
||||||
|
def nursery(self):
|
||||||
|
"""Ask the user to type in the first line of a nursery rhyme and display
|
||||||
|
the length of the string. Ask for a starting number and an ending number
|
||||||
|
and then display just that section of the text."""
|
||||||
|
rhyme = input("Escribe la primera linea de una canción de cuna: ")
|
||||||
|
print("Tiene {len(rhyme)} letras")
|
||||||
|
ini_num = int(input("Ingresa un número inicial"))
|
||||||
|
end_num = int(input("Ingresa un número final"))
|
||||||
|
sel = rhyme[ini_num:end_num]
|
||||||
|
print(sel)
|
||||||
|
|
||||||
|
def any_mayus(self):
|
||||||
|
"""Ask the user to type in any word and display it in upper case."""
|
||||||
|
anyword = input("Ingresa cualquier palabra: ").upper()
|
||||||
|
print(anyword)
|
||||||
|
|
||||||
|
def mambo_name(self):
|
||||||
|
"""Ask the user to enter their first name. If the length of their first
|
||||||
|
name is under five characters, ask them to enter their surname and join
|
||||||
|
them together (without a space) and display the name in upper case. If
|
||||||
|
the length of the first name is five or more characters, display their
|
||||||
|
first name in lower case."""
|
||||||
|
name = input("Ingresa tu primer nombre: ")
|
||||||
|
if len(name) < 5:
|
||||||
|
surname = input("Ingresa tu apellido: ")
|
||||||
|
fullname = (name+surname).upper()
|
||||||
|
print(fullname)
|
||||||
|
else:
|
||||||
|
print(name.lower())
|
||||||
|
|
||||||
|
def pig_latin(self):
|
||||||
|
"""Pig Latin takes the first consonant of a word, moves it to the end of
|
||||||
|
the word and adds on an \"ay\". If a word begins with a vowel you just
|
||||||
|
add \"way\" to the end. For example, pig becomes igpay, banana becomes
|
||||||
|
ananabay, and aadvark becomes aadvarkway. Create a program that will ask
|
||||||
|
the user to enter a word and change it into Pig Latin. Make sure the new
|
||||||
|
word is displayed in lower case."""
|
||||||
|
word = input("Ingresa una palabra: ").lower()
|
||||||
|
if word[0:1] in 'aeiou':
|
||||||
|
piglatin = word+'way'
|
||||||
|
else:
|
||||||
|
piglatin = word[1:]+word[0]+'ay'
|
||||||
|
print(piglatin)
|
||||||
|
|
79
basic/basic04.py
Normal file
79
basic/basic04.py
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
class basics_004:
|
||||||
|
|
||||||
|
def decims(self):
|
||||||
|
"""Ask the user to enter a number with lots of decimal places. Multiply
|
||||||
|
this number by two and display the answer."""
|
||||||
|
num = float(input("Ingresa un número con muchos decimales: "))
|
||||||
|
print(num*2)
|
||||||
|
|
||||||
|
def decims_round(self):
|
||||||
|
"""Update last program so that it will display the answer to two decimal
|
||||||
|
places."""
|
||||||
|
num = float(input("Ingresa un número con muchos decimales: "))
|
||||||
|
numr = round(num*2, 2)
|
||||||
|
print(numr)
|
||||||
|
|
||||||
|
def square_root(self):
|
||||||
|
"""Ask the user to enter an integer that is over 500. Work out the
|
||||||
|
square root of that number and display it to two decimal places."""
|
||||||
|
from math import sqrt
|
||||||
|
num = int("Ingresa un número entero mayor de 500: ")
|
||||||
|
root = round(sqrt(num), 2)
|
||||||
|
print(root)
|
||||||
|
|
||||||
|
def pi_round(self):
|
||||||
|
"""Display pi (π) to five decimal places."""
|
||||||
|
from math import pi
|
||||||
|
print(round(pi,5))
|
||||||
|
|
||||||
|
def circle_area(self):
|
||||||
|
"""Ask the user to enter the radius of a circle. Work out the area of
|
||||||
|
the circle (π*radius2)."""
|
||||||
|
from math import pi
|
||||||
|
radio = float(input("Ingresa el radio de la circunferencia: "))
|
||||||
|
area = pi*(radio**2)
|
||||||
|
print(f"El area de la circunferencia es {round(area, 3)}")
|
||||||
|
|
||||||
|
def cyl_vol(self):
|
||||||
|
"""Ask for the radius and the depth of a cylinder and work out the total
|
||||||
|
volume (circle area*depth) rounded to three decimal places."""
|
||||||
|
from math import pi
|
||||||
|
radio = float(input("Ingresa el radio del cilindro: "))
|
||||||
|
largo = float(input("Ingresa el largo del cilindro: "))
|
||||||
|
area = pi*(radio**2)
|
||||||
|
volumen = round(area*largo, 3)
|
||||||
|
print(f"El volumen del cilindro es {volumen}")
|
||||||
|
|
||||||
|
def friendly_div(self):
|
||||||
|
"""Ask the user to enter two numbers. Use whole number division to divide
|
||||||
|
the first number by the second and also work out the remainder and
|
||||||
|
display the answer in a user-friendly way (e.g. if they enter 7 and 2
|
||||||
|
display \"7 divided by 2 is 3 with 1 remaining\")."""
|
||||||
|
num_1 = float(input("Ingresa un número: "))
|
||||||
|
num_2 = float(input("Ingresa otro número: "))
|
||||||
|
res_1 = num_1//num_2
|
||||||
|
res_2 = num_1%num_2
|
||||||
|
print(f"{num_2} cabe {res_1} veces en {num_1}, y sobran {res_2} ")
|
||||||
|
|
||||||
|
def circ_trian(self):
|
||||||
|
"""Display the following message:
|
||||||
|
1) Square
|
||||||
|
2) Triangle
|
||||||
|
Enter a number:
|
||||||
|
If the user enters 1, then it should ask them for the length of one of
|
||||||
|
its sides and display the area. If they select 2, it should ask for the
|
||||||
|
base and height of the triangle and display the area. If they type in
|
||||||
|
anything else, it should give them a suitable error message"""
|
||||||
|
print(" 1) Cuadrado\n 2) Triangulo\n")
|
||||||
|
choice = input(" Ingresa un número: ")
|
||||||
|
match choice:
|
||||||
|
case '1':
|
||||||
|
side = int(input("Ingresa el largo del cuadrado: "))
|
||||||
|
print(f"El area del cuadrado es {side*side}")
|
||||||
|
case '2':
|
||||||
|
base = int(input("Ingresa la base del triagulo: "))
|
||||||
|
altura = int(input("Ingresa la altura del triagulo: "))
|
||||||
|
area = round((base*altura)/2, 3)
|
||||||
|
print(f"El area del triangulo rectángulo es {area}")
|
||||||
|
case _:
|
||||||
|
print("Debes escoger una opción válida")
|
0
common/__init__.py
Normal file
0
common/__init__.py
Normal file
54
common/common.py
Normal file
54
common/common.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import os
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
clear = lambda: os.system('clear') if os.name == 'posix' else os.system('cls')
|
||||||
|
tab='\n'+' '*4
|
||||||
|
|
||||||
|
def excp_handler(function):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
try:
|
||||||
|
function(*args, **kwargs)
|
||||||
|
except Exception:
|
||||||
|
print("Lee atentamente las instrucciones e intenta nuevamente")
|
||||||
|
sleep(3)
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
def opcs_default():
|
||||||
|
print(""" v) Volver
|
||||||
|
s) Salir""")
|
||||||
|
|
||||||
|
def enter_continue():
|
||||||
|
input("\n\tPresiona Enter para continuar\n")
|
||||||
|
|
||||||
|
@excp_handler
|
||||||
|
def run_func(func):
|
||||||
|
print(tab, func.__doc__, '\n')
|
||||||
|
func()
|
||||||
|
enter_continue()
|
||||||
|
|
||||||
|
def user_input(i):
|
||||||
|
try:
|
||||||
|
selection = input("\n Ingresa una opción: ")
|
||||||
|
if selection in 'sSvV':
|
||||||
|
return selection.lower()
|
||||||
|
selection = int(selection)
|
||||||
|
if 0 < selection <= i:
|
||||||
|
clear()
|
||||||
|
return selection
|
||||||
|
else:
|
||||||
|
raise Exception
|
||||||
|
except Exception:
|
||||||
|
print("Debes ingresar una opción válida")
|
||||||
|
sleep(2)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def print_challenges(exercises):
|
||||||
|
ex = exercises()
|
||||||
|
i = 0
|
||||||
|
funcs = list(vars(exercises))[1:-3]
|
||||||
|
while i < len(funcs):
|
||||||
|
print(f"{i+1}) ".rjust(8), end='')
|
||||||
|
print(vars(exercises).get(funcs[i]).__doc__)
|
||||||
|
i+=1
|
||||||
|
opcs_default()
|
||||||
|
return i, ex
|
118
main.py
Executable file
118
main.py
Executable file
@ -0,0 +1,118 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from basic import basic
|
||||||
|
from common.common import clear, user_input, opcs_default
|
||||||
|
|
||||||
|
def toc():
|
||||||
|
content="""\tContenido\n
|
||||||
|
1) Basicos 001-059
|
||||||
|
2) Intermedio 060-123
|
||||||
|
3) Tkinter 124-138
|
||||||
|
4) SQLite 139-145
|
||||||
|
...
|
||||||
|
s) Salir
|
||||||
|
"""
|
||||||
|
print(content)
|
||||||
|
|
||||||
|
def basic_challenges():
|
||||||
|
content = """
|
||||||
|
1) Basics 001-011
|
||||||
|
2) Basics 012-019
|
||||||
|
3) Basics 020-026
|
||||||
|
4) Basics 027-034
|
||||||
|
5) Basics 035-044
|
||||||
|
6) Basics 045-051
|
||||||
|
7) Basics 052-059
|
||||||
|
"""
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
print(content)
|
||||||
|
opcs_default()
|
||||||
|
selection = user_input(5)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
basic.challenges01()
|
||||||
|
case 2:
|
||||||
|
basic.challenges02()
|
||||||
|
case 3:
|
||||||
|
basic.challenges03()
|
||||||
|
case 4:
|
||||||
|
basic.challenges04()
|
||||||
|
case 5:
|
||||||
|
pass
|
||||||
|
case 6:
|
||||||
|
pass
|
||||||
|
case 7:
|
||||||
|
pass
|
||||||
|
case 'v':
|
||||||
|
return
|
||||||
|
case 's':
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
continue
|
||||||
|
|
||||||
|
def interm_challenges():
|
||||||
|
content = """
|
||||||
|
1) Interm 060-068
|
||||||
|
2) Interm 069-079
|
||||||
|
3) Interm 080-087
|
||||||
|
4) Interm 088-095
|
||||||
|
5) Interm 096-103
|
||||||
|
6) Interm 105-110
|
||||||
|
7) Interm 111-117
|
||||||
|
8) Interm 118-123
|
||||||
|
"""
|
||||||
|
print(content)
|
||||||
|
|
||||||
|
def tkinter_challenges():
|
||||||
|
content = """
|
||||||
|
1) Tkinter 124-132
|
||||||
|
2) Tkinter 133-138
|
||||||
|
"""
|
||||||
|
print(content)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
clear()
|
||||||
|
header = """
|
||||||
|
=======================================
|
||||||
|
\"Learning to Program in 150 Challenges\"
|
||||||
|
Python by example, Nichola Lacey
|
||||||
|
=======================================
|
||||||
|
programmed by devfzn@gmail.com
|
||||||
|
---------------------------------------\n"""
|
||||||
|
select_ok = False
|
||||||
|
while not select_ok:
|
||||||
|
clear()
|
||||||
|
print(header)
|
||||||
|
toc()
|
||||||
|
selection = user_input(5)
|
||||||
|
match selection:
|
||||||
|
case 1:
|
||||||
|
basic_challenges()
|
||||||
|
case 2:
|
||||||
|
interm_challenges()
|
||||||
|
case 3:
|
||||||
|
tkinter_challenges()
|
||||||
|
case 4:
|
||||||
|
pass
|
||||||
|
case 5:
|
||||||
|
pass
|
||||||
|
case 6:
|
||||||
|
pass
|
||||||
|
case 7:
|
||||||
|
pass
|
||||||
|
case 8:
|
||||||
|
pass
|
||||||
|
case 9:
|
||||||
|
pass
|
||||||
|
case 10:
|
||||||
|
pass
|
||||||
|
case 's':
|
||||||
|
select_ok = True
|
||||||
|
exit(0)
|
||||||
|
case _:
|
||||||
|
select_ok = False
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user