+: intermedios 118-123
This commit is contained in:
parent
7f8905fd4f
commit
0e522a71ff
@ -34,6 +34,7 @@ de *Nichola Lacey*
|
||||
- [096-104](./interm/interm04.py)
|
||||
- [105-110](./interm/interm05.py)
|
||||
- [111-117](./interm/interm06.py)
|
||||
- [118-123](./interm/interm07.py)
|
||||
|
||||
## Uso
|
||||
|
||||
|
@ -4,6 +4,7 @@ from . import interm03 as ex03
|
||||
from . import interm04 as ex04
|
||||
from . import interm05 as ex05
|
||||
from . import interm06 as ex06
|
||||
from . import interm07 as ex07
|
||||
from common.common import (
|
||||
print_challenges,
|
||||
user_input,
|
||||
@ -194,32 +195,28 @@ def challenges06():
|
||||
case _:
|
||||
continue
|
||||
|
||||
#def challenges07():
|
||||
# select_ok = False
|
||||
# while not select_ok:
|
||||
# clear()
|
||||
# i, ex7 = print_challenges(ex07.basics_007)
|
||||
# selection = user_input(i)
|
||||
# match selection:
|
||||
# case 1:
|
||||
# run_func(ex7.rand_range)
|
||||
# case 2:
|
||||
# run_func(ex7.rand_choice)
|
||||
# case 3:
|
||||
# run_func(ex7.rand_game)
|
||||
# case 4:
|
||||
# run_func(ex7.rand_pick)
|
||||
# case 5:
|
||||
# run_func(ex7.rand_10)
|
||||
# case 6:
|
||||
# run_func(ex7.rand_10_upgrade)
|
||||
# case 7:
|
||||
# run_func(ex7.rand_quiz)
|
||||
# case 8:
|
||||
# run_func(ex7.rand_color)
|
||||
# case 'v':
|
||||
# return
|
||||
# case 's':
|
||||
# exit(0)
|
||||
# case _:
|
||||
# continue
|
||||
def challenges07():
|
||||
select_ok = False
|
||||
while not select_ok:
|
||||
clear()
|
||||
i, ex7 = print_challenges(ex07.interm007)
|
||||
selection = user_input(i)
|
||||
match selection:
|
||||
case 1:
|
||||
run_func(ex7.sub_118)
|
||||
case 2:
|
||||
run_func(ex7.sub_119)
|
||||
case 3:
|
||||
run_func(ex7.sub_120)
|
||||
case 4:
|
||||
run_func(ex7.sub_121)
|
||||
case 5:
|
||||
run_func(ex7.sub_122)
|
||||
case 6:
|
||||
run_func(ex7.sub_123)
|
||||
case 'v':
|
||||
return
|
||||
case 's':
|
||||
exit(0)
|
||||
case _:
|
||||
continue
|
||||
|
297
interm/interm07.py
Normal file
297
interm/interm07.py
Normal file
@ -0,0 +1,297 @@
|
||||
class interm007:
|
||||
|
||||
def sub_118(self):
|
||||
"""Define a subprogram that will ask the user to enter a number and
|
||||
save it as the variable \'num\'. Define another subprogram that will
|
||||
use \'num\' and count from 1 to that number."""
|
||||
def save_num():
|
||||
return int(input("Ingresa un número: "))
|
||||
|
||||
def use_num(num):
|
||||
print(*[x for x in range(1, num+1)])
|
||||
|
||||
num = save_num()
|
||||
use_num(num)
|
||||
|
||||
def sub_119(self):
|
||||
"""Define a subprogram that will ask the user to pick a low and a high
|
||||
number, and then generate a random number between those two values and
|
||||
store it in a variable called \'comp_num\'.
|
||||
Define another subprogram that will give the instruction \'I am thinking
|
||||
of a number…\' and then ask the user to guess the number they are
|
||||
thinking of.
|
||||
Define a third subprogram that will check to see if the comp_num is the
|
||||
same as the user’s guess. If it is, it should display the message
|
||||
\'Correct, you win\', otherwise it should keep looping, telling the user
|
||||
if they are too low or too high and asking them to guess again until they
|
||||
guess correctly."""
|
||||
from random import randint
|
||||
def num_gen():
|
||||
ini = int(input("Ingresa un número inicial: "))
|
||||
end = int(input("Ingresa un número final: "))
|
||||
return randint(ini, end)
|
||||
|
||||
def thinking():
|
||||
print("¡Estoy pensando en un número!")
|
||||
guess = int(input("¿Cual es el número?: "))
|
||||
return guess
|
||||
|
||||
def check_nums(num, guess):
|
||||
while num != guess:
|
||||
if num > guess:
|
||||
print("Muy bajo")
|
||||
else:
|
||||
print("Muy alto")
|
||||
guess = int(input("¿Cual es el número?: "))
|
||||
print("Correcto, ganaste!")
|
||||
|
||||
secret = num_gen()
|
||||
guess = thinking()
|
||||
check_nums(secret, guess)
|
||||
|
||||
def sub_120(self):
|
||||
"""Display the following menu to the user:
|
||||
1) Addition
|
||||
2) Subtraction
|
||||
Enter 1 or 2:
|
||||
If they enter a 1, it should run a subprogram that will generate two
|
||||
random numbers between 5 and 20, and ask the user to add them together.
|
||||
Work out the correct answer and return both the user’s answer and the
|
||||
correct answer.
|
||||
If they entered 2 as their selection on the menu, it should run a
|
||||
subprogram that will generate one number between 25 and 50 and another
|
||||
number between 1 and 25 and ask them to work out num1 minus num2. This
|
||||
way they will not have to worry about negative answers. Return both the
|
||||
user’s answer and the correct answer.
|
||||
Create another subprogram that will check if the user’s answer matches
|
||||
the actual answer. If it does, display \'Correct\', otherwise display a
|
||||
message that will say \'Incorrect, the answer is\' and display the real
|
||||
answer.
|
||||
If they do not select a relevant option on the first menu you should
|
||||
display a suitable message."""
|
||||
from random import randint
|
||||
def menu():
|
||||
print(
|
||||
"""
|
||||
1) Suma
|
||||
2) Resta
|
||||
""")
|
||||
sel = int(input("Ingresa una opción: "))
|
||||
match sel:
|
||||
case 1:
|
||||
num, resp = gen_add()
|
||||
check_resp(num, resp)
|
||||
case 2:
|
||||
num, resp = gen_sub()
|
||||
check_resp(num, resp)
|
||||
case _:
|
||||
print("Debes elegir una opción válida")
|
||||
|
||||
def gen_add():
|
||||
num_1 = randint(25, 50)
|
||||
num_2 = randint(25, 50)
|
||||
resp = int(input(f"¿Cuanto es {num_1}+{num_2}?: "))
|
||||
return num_1+num_2, resp
|
||||
|
||||
def gen_sub():
|
||||
num_1 = randint(25, 50)
|
||||
num_2 = randint(1, 25)
|
||||
resp = int(input(f"¿Cuanto es {num_1}-{num_2}?: "))
|
||||
return num_1-num_2, resp
|
||||
|
||||
def check_resp(correct, resp):
|
||||
if correct == resp:
|
||||
print("Correcto!")
|
||||
else:
|
||||
print(f"Incorrecto, la respuesta es {correct}")
|
||||
|
||||
menu()
|
||||
|
||||
def sub_121(self):
|
||||
"""Create a program that will allow the user to easily manage a list of
|
||||
names. You should display a menu that will allow them to add a name to
|
||||
the list, change a name in the list, delete a name from the list or view
|
||||
all the names in the list. There should also be a menu option to allow
|
||||
the user to end the program. If they select an option that is not
|
||||
relevant, then it should display a suitable message. After they have made
|
||||
a selection to either add a name, change a name, delete a name or view
|
||||
all the names, they should see the menu again without having to restart
|
||||
the program. The program should be made as easy to use as possible."""
|
||||
lmenu ="""
|
||||
1) Agregar nombre
|
||||
2) Editar nombre
|
||||
3) Borrar nombre
|
||||
4) Ver nombres
|
||||
0) Salir
|
||||
"""
|
||||
names = []
|
||||
def menu():
|
||||
while True:
|
||||
print(lmenu)
|
||||
sel = int(input("Ingresa una opción: "))
|
||||
match sel:
|
||||
case 1:
|
||||
add_name()
|
||||
case 2:
|
||||
edit_name()
|
||||
case 3:
|
||||
del_name()
|
||||
case 4:
|
||||
show_names()
|
||||
case 0:
|
||||
break
|
||||
case _:
|
||||
print("Debes ingresar una opción válida")
|
||||
|
||||
def add_name():
|
||||
name = input("Ingresa el nombre: ").title()
|
||||
names.append(name)
|
||||
|
||||
def edit_name():
|
||||
name = input("Ingresa el nombre que quieres editar: ")
|
||||
if name in names:
|
||||
new_name = input("Ingresa el nuevo nombre: ").title()
|
||||
names[names.index(name)] = new_name
|
||||
else:
|
||||
print(f"{name} no esta en la lista")
|
||||
|
||||
def del_name():
|
||||
name = input("Ingresa el nombre que quieres borrar: ").title()
|
||||
if name in names:
|
||||
del names[names.index(name)]
|
||||
else:
|
||||
print(f"{name} no esta en la lista")
|
||||
|
||||
def show_names():
|
||||
print("\nNombres:")
|
||||
for name in names:
|
||||
print(name)
|
||||
|
||||
menu()
|
||||
|
||||
def sub_122(self):
|
||||
"""Create the following menu:
|
||||
1) Add to file
|
||||
2) View all records
|
||||
3) Quit program
|
||||
Enter the number of your selection:
|
||||
If the user selects 1, allow them to add to a file called Salaries.csv
|
||||
which will store their name and salary. If they select 2 it should
|
||||
display all records in the Salaries.csv file. If they select 3 it should
|
||||
stop the program. If they select an incorrect option they should see an
|
||||
error message. They should keep returning to the menu until they select
|
||||
option 3."""
|
||||
from os import getcwd as pwd
|
||||
from os.path import isfile
|
||||
import csv
|
||||
file_path = f"{pwd()}/interm/files/Salaries.csv"
|
||||
lmenu ="""
|
||||
1) Agregar a archivo
|
||||
2) Ver registros
|
||||
3) Salir
|
||||
"""
|
||||
def menu():
|
||||
while True:
|
||||
print(lmenu)
|
||||
sel = int(input("Ingresa una opción: "))
|
||||
match sel:
|
||||
case 1:
|
||||
add_to()
|
||||
case 2:
|
||||
view_all()
|
||||
case 3:
|
||||
break
|
||||
case _:
|
||||
print("Debes ingresar una opción válida")
|
||||
|
||||
def add_to():
|
||||
print("\nAgregando un nuevo registro")
|
||||
name = input("Ingresa el nombre: ").title()
|
||||
salary = input("Ingresa el salario: ")
|
||||
new_data = [name, salary]
|
||||
with open(file_path, 'a') as file:
|
||||
writer = csv.writer(file)
|
||||
writer.writerow(new_data)
|
||||
|
||||
def view_all():
|
||||
if isfile(file_path):
|
||||
with open(file_path, 'r') as file:
|
||||
reader = csv.reader(file)
|
||||
contnt = list(reader)
|
||||
for i, line in enumerate(contnt):
|
||||
print(str(i).ljust(3), line[0].ljust(12), line[1].ljust(8))
|
||||
else:
|
||||
print("El archivo aún no existe, agrega un registro para crearlo")
|
||||
|
||||
menu()
|
||||
|
||||
def sub_123(self):
|
||||
"""In Python, it is not technically possible to directly delete a record
|
||||
from a .csv file. Instead you need to save the file to a temporary list
|
||||
in Python, make the changes to the list and then overwrite the original
|
||||
file with the temporary list.
|
||||
Change the previous program to allow you to do this. Your menu should
|
||||
now look like this:
|
||||
1) Add to file
|
||||
2) View all records
|
||||
3) Delete a record
|
||||
4) Quit program
|
||||
Enter the number of your selection:"""
|
||||
from os import getcwd as pwd
|
||||
from os.path import isfile
|
||||
import csv
|
||||
file_path = f"{pwd()}/interm/files/Salaries.csv"
|
||||
lmenu ="""
|
||||
1) Agregar a archivo
|
||||
2) Ver registros
|
||||
3) Eliminar un registro
|
||||
4) Salir
|
||||
"""
|
||||
def menu():
|
||||
while True:
|
||||
print(lmenu)
|
||||
sel = int(input("Ingresa una opción: "))
|
||||
match sel:
|
||||
case 1:
|
||||
add_to()
|
||||
case 2:
|
||||
view_all()
|
||||
case 3:
|
||||
del_reg()
|
||||
case 4:
|
||||
break
|
||||
case _:
|
||||
print("Debes ingresar una opción válida")
|
||||
|
||||
def add_to():
|
||||
print("\nAgregando un nuevo registro")
|
||||
name = input("Ingresa el nombre: ").title()
|
||||
salary = input("Ingresa el salario: ")
|
||||
new_data = [name, salary]
|
||||
with open(file_path, 'a') as file:
|
||||
writer = csv.writer(file)
|
||||
writer.writerow(new_data)
|
||||
|
||||
def view_all():
|
||||
if isfile(file_path):
|
||||
with open(file_path, 'r') as file:
|
||||
reader = csv.reader(file)
|
||||
contnt = list(reader)
|
||||
for i, line in enumerate(contnt):
|
||||
print(str(i).ljust(3), line[0].ljust(12), line[1].ljust(8))
|
||||
else:
|
||||
print("El archivo aún no existe, agrega un registro para crearlo")
|
||||
|
||||
def del_reg():
|
||||
view_all()
|
||||
with open(file_path, 'r') as file:
|
||||
reader = csv.reader(file)
|
||||
contnt = list(reader)
|
||||
to_del = int(input("Ingresa el número del registro a borrar: "))
|
||||
if to_del < len(contnt):
|
||||
del contnt[to_del]
|
||||
with open(file_path, 'w') as file:
|
||||
writer = csv.writer(file)
|
||||
writer.writerows(contnt)
|
||||
|
||||
menu()
|
5
main.py
5
main.py
@ -70,7 +70,7 @@ def interm_challenges():
|
||||
clear()
|
||||
print(content)
|
||||
opcs_default(1)
|
||||
selection = user_input(6)
|
||||
selection = user_input(7)
|
||||
match selection:
|
||||
case 1:
|
||||
interm.challenges01()
|
||||
@ -85,8 +85,7 @@ def interm_challenges():
|
||||
case 6:
|
||||
interm.challenges06()
|
||||
case 7:
|
||||
#interm.challenges07()
|
||||
pass
|
||||
interm.challenges07()
|
||||
case 'v':
|
||||
return
|
||||
case 's':
|
||||
|
Loading…
Reference in New Issue
Block a user