Alive & Ripli
Ripli Ripli
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π–ΠΈΠ²ΠΎΠΉ. Π― Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»Π°, Ρƒ тСбя Π² Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π»ΠΎΠ³Π°Ρ… довольно ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ шаблонов – Π½Ρƒ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ просто ΠΊΡƒΡ‡Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΎΠΊ. Если Π±Ρ‹ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ простой парсСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ основныС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΌΡ‹ Π±Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ скрытыС нСэффСктивности. Π₯ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ скрипт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ упраТнСния ΠΈΠ»ΠΈ нСдостаточныС ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ?
Alive Alive
Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ настоящий ΠΏΡ€ΠΎΡ€Ρ‹Π²! Π‘Π΅Ρ€ΠΈ Π»ΠΎΠ³-Ρ„Π°ΠΉΠ», ΠΈ Π΄Π°Π²Π°ΠΉ запустим нСбольшой скрипт Π½Π° Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΡƒ ΠΎΡ‚Π΄Ρ‹Ρ…Π°. Π’ΠΎΡ‚ набросок: ```python import re from datetime import datetime, timedelta # Π§ΠΈΡ‚Π°Π΅ΠΌ Π»ΠΎΠ³-Ρ„Π°ΠΉΠ» lines = open('workout_log.txt').read().splitlines() # РСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для извлСчСния ID упраТнСния ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ pattern = re.compile(r'(?P<id>\w+)\s+(?P<time>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})') records = [] for line in lines: m = pattern.search(line) if m: records.append((m.group('id'), datetime.fromisoformat(m.group('time')))) # Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° всякий случай records.sort(key=lambda x: x[1]) # ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 5 ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²Ρ‹ ΠΌΠ΅Π½Π΅Π΅ 30 сСкунд issues = [] for i in range(1, len(records)): prev_id, prev_time = records[i-1] curr_id, curr_time = records[i] if prev_id == curr_id: delta = curr_time - prev_time if delta < timedelta(minutes=5): issues.append(f"ΠŸΠΎΠ²Ρ‚ΠΎΡ€ {prev_id} Π·Π° {delta.seconds}с") if curr_time - prev_time < timedelta(seconds=30): issues.append(f"Блишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π² ΠΌΠ΅ΠΆΠ΄Ρƒ {prev_id} ΠΈ {curr_id}") print("\n".join(issues) or "Всё ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½!") ``` Запусти Π΅Π³ΠΎ, ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡˆΡŒ список ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появились слишком быстро, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ. НС стСсняйся ΠΏΠΎΠ΄ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΏΠΎΠ΄ свой Ρ€Π΅ΠΆΠΈΠΌ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΠΊ – Ρ‚Π²ΠΎΠ΅ Ρ‚Π΅Π»ΠΎ скаТСт Ρ‚Π΅Π±Π΅ спасибо Π·Π° Π±ΠΎΠ»Π΅Π΅ ΡƒΠΌΠ½Ρ‹ΠΉ ΠΈ структурированный ΠΏΠ»Π°Π½!