last lab
This commit is contained in:
89
labPython/lab15/task_3.py
Normal file
89
labPython/lab15/task_3.py
Normal file
@@ -0,0 +1,89 @@
|
||||
class FitnessRecord:
|
||||
def __init__(self, duration, client_code, year, month):
|
||||
self.duration = duration
|
||||
self.client_code = client_code
|
||||
self.year = year
|
||||
self.month = month
|
||||
|
||||
|
||||
def solve():
|
||||
while True:
|
||||
print("\n--- Меню ExamTaskC16 ---")
|
||||
print("1. Ввести данные и выполнить расчет")
|
||||
print("2. Выход")
|
||||
|
||||
choice = input("Выберите вариант: ")
|
||||
|
||||
if choice == "2":
|
||||
break
|
||||
elif choice == "1":
|
||||
try:
|
||||
k_code = int(input("Введите код клиента K (10-99): "))
|
||||
n = int(input("Введите количество строк N: "))
|
||||
|
||||
records = []
|
||||
for i in range(n):
|
||||
print(f"Строка {i + 1} из {n}")
|
||||
line = input(
|
||||
"Формат <Продолжительность> <Код клиента> <Год> <Номер месяца>: "
|
||||
).split()
|
||||
|
||||
if len(line) != 4:
|
||||
print("Ошибка: должно быть 4 числа.")
|
||||
continue
|
||||
|
||||
dur, code, yr, mnth = map(int, line)
|
||||
records.append(FitnessRecord(dur, code, yr, mnth))
|
||||
|
||||
target_records = [r for r in records if r.client_code == k_code]
|
||||
|
||||
if not target_records:
|
||||
print("Нет данных")
|
||||
continue
|
||||
|
||||
years = {}
|
||||
for r in target_records:
|
||||
if r.duration == 0:
|
||||
continue
|
||||
if r.year not in years:
|
||||
years[r.year] = []
|
||||
years[r.year].append(r)
|
||||
|
||||
if not years:
|
||||
print("Нет данных")
|
||||
continue
|
||||
|
||||
results = []
|
||||
for year in years:
|
||||
year_records = years[year]
|
||||
|
||||
min_dur = min(r.duration for r in year_records)
|
||||
|
||||
candidates = [r for r in year_records if r.duration == min_dur]
|
||||
|
||||
best_month_record = max(candidates, key=lambda x: x.month)
|
||||
|
||||
results.append(
|
||||
{
|
||||
"duration": min_dur,
|
||||
"year": year,
|
||||
"month": best_month_record.month,
|
||||
}
|
||||
)
|
||||
|
||||
results.sort(key=lambda x: (x["duration"], x["year"]))
|
||||
|
||||
print("\nРезультат:")
|
||||
for res in results:
|
||||
print(f"{res['duration']} {res['year']} {res['month']}")
|
||||
|
||||
except ValueError:
|
||||
print("Ошибка: вводите только целые числа.")
|
||||
except Exception as e:
|
||||
print(f"Произошла ошибка: {e}")
|
||||
else:
|
||||
print("Неверный выбор.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
solve()
|
||||
Reference in New Issue
Block a user