Cześć,
jestem początkujący, przerabiam różne materiały i stanąłem przed zadaniem, które ma polegać na stworzeniu aplikacji a'la loterii. Na ten moment należy:
- Wczytać dane z zewnętrznych plików (json/csv). Dane zawierają spis uczestników loterii (ID, imie, nazwisko oraz opcjonalnie wagę (waga miałaby póżniej pozwalać na zmianę prawdopodobieństwa wylosowania uczestnika loterii).
- Pozwolić użytkownikowi wybrać czy ma losować z pliku z wagami czy bez (domyślnie z pliku json ale ma byc tez dostepna funkcja do pobrania z csv)
- Pozwolić użytkownikowi wybrać liczbę zwycięzców z przedziału
- Wylosować z wczytanych danych taką liczbę zwycięzców jaką wybrał użytkownik
- Wypisać wylosowanych zwycięzców
Tak jak napisałem jestem początkujący dopiero zaczynam i chciałem prosić o sprawdzenie napisanego kodu oraz o pomoc w przypadku losowania podanej przez uzytkownika liczby zwycięzców z wczytanych danych bo się tutaj zablokowałem i nie wiem za bardzo jak to ugryźć. Zapewne są błedy, jednak prosiłbym o konstruktywną krytykę.
Kod:
# Import modules
import csv
import json
import random
# Load JSON files - participants without weights
def load_json_wow():
with open('participants1.json.', 'r', encoding='utf-8') as jsonfile:
participants = json.load(jsonfile)
for row in participants:
print('\n ', 'ID:', row['id'])
print('First Name:', row['first_name'])
print('Last Name:', row['last_name'])
# Load JSON files - participants with weights
# (The weights are to enable the control of the probability of a given participant being drawn.)
def load_json_ww():
with open('participants2.json.', 'r', encoding='utf-8') as jsonfile:
participants = json.load(jsonfile)
for row in participants:
print('\n ', 'ID:', row['id'])
print('First Name:', row['first_name'])
print('Last Name:', row['last_name'])
print('Weight:', row['weight'])
# Load CSV files - participants without weights
def load_csv_wow():
with open('participants1.csv.', 'r', encoding='utf-8') as csvfile:
participants = csv.DictReader(csvfile)
for row in participants:
print('\n ', 'ID:', row['id'])
print('First Name:', row['first_name'])
print('Last Name:', row['last_name'])
# Load CSV files - participants with weights
# (The weights are to enable the control of the probability of a given participant being drawn.)
def load_csv_ww():
with open('participants2.csv.', 'r', encoding='utf-8') as csvfile:
participants_w = csv.DictReader(csvfile)
for row in participants_w:
print('\n ', 'ID:', row['id'])
print('First Name:', row['first_name'])
print('Last Name:', row['last_name'])
print('Weight:', row['weight'])
def ask_yes_no(question):
"""Ask the question yes or no"""
response = None
while response not in ("y", "n"):
response = input(question).lower()
return response
def ask_number(question, low, high):
"""Enter the number of winners"""
response = None
while response not in range(low, high):
response = int(input(question))
return response
def draw_winners_wow():
"""Draw the winners from the indicated range"""
winner = ask_number("Choose the number of winners (1 - 10):", 1, 10)
def draw_winners_ww():
"""Draw the winners from the indicated range"""
winner = ask_number("Choose the number of winners (1 - 10):", 1, 10)
choice = None
# The loop of lottery menu
while choice != 0:
print(
"""
The lottery menu
0 - Close the application
1 - Choose a file with or without weights
"""
)
choice = input("Choose: ")
# Choice 0 - Exit the application
if choice == "0":
input("\nPress 'Enter' to close the application: ")
break
# Choice 1 - choose a file with or without weights
elif choice == "1":
choose = ask_yes_no("To choose a file without weights press y, otherwise press n. (y/n): ")
# Load the function with the JSON file without weights
if choose == "y":
draw_winners_wow()
# Load the function with the JSON file with weights
elif choose == "n":
draw_winners_ww()
# The user selected an undefined option.
else:
print("\nSomething went wrong! Try again please.")
# The user selected an undefined option.
else:
print("\nSomething went wrong! Try again please.")