Π Π°Π±ΠΎΡΠ° ΠΌΠ΅ΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ 💼

💭ΠΠ΅ΡΡΠ°Π΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π‘Π±Π΅ΡΠ΅, Π½ΠΎ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Π΄Π΅ΡΡΡΡ ΠΊΡΡΠ³ΠΎΠ² HR-ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ? Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ!
💡AI-ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π·Π° 15 ΠΌΠΈΠ½ΡΡ β ΠΈ ΡΡ ΡΠΆΠ΅ Π½Π° ΡΠ°Π³ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅.
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΡΠ΅Ρ? 📌 ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΡ 📌 ΠΡΠΎΠΉΠ΄ΠΈ AI-ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ 📌 ΠΠΎΠ»ΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅!
HR Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠ½ΡΡ Π²ΡΠ΅ΠΌΡ β ΡΠ΅ΠΊΡΡΡΠ΅ΡΡ ΡΠ²ΡΠΆΡΡΡΡ Ρ ΡΠΎΠ±ΠΎΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ Π΄Π½Π΅ΠΉ! 🚀
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Π‘ΠΠΠ ΠΠΠΠ, ΠΠΠ 7707083893. Erid 2VtzquscAwp
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΈΠΊΠ»Π° Π² Python ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΏΡΠΎΡΡ, ΠΈ Π½Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π΅Π½. ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΊΠ»Ρ Π² Python Π»ΠΈΡΠ΅Π½Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠ΅Ρ
ΡΡΡΠΏΠ΅Π½ΡΠ°ΡΠΎΠΉ
ΡΡΡΡΠΊΡΡΡΡ for (init, condition, increment)
. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ for <item> in <iterable>
. Π¦ΠΈΠΊΠ» while
<condition>
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΆΠ΅.
Π₯ΠΎΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΈΠΊΠ»Π° Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΡΠ»ΠΎΠΆΠ΅Π½, Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΈΠΊΠ» Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΡΠΉ ΠΊΠΎΠ΄ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠ°ΠΌΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² Π½Π° Python.
ΠΠ΅ΡΠΆΠ΅Π»ΠΈ ΡΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Β«Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΒ»?
Π£ Π²ΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΄Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π·Π°Π΄Π°Ρ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, Π²Ρ ΡΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΊΠΎΠ³ΠΎ-ΡΠΎ, ΠΊΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΡΡΠ°Π΅Ρ Python: Β«ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°?Β». ΠΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
index = 0
for name in names:
print(index, name)
index += 1
Π₯ΠΎΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» Π²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π² ΡΡΠΈΠ»Π΅ Python. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Ρ ΡΡΠ΅Ρ Π»Π΅ΡΠ½ΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
for i, name in enumerate(names):
print(i, name)
enumerate()
β ΡΡΠΎ
Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Python, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π°
Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ β Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π²ΠΈΠ΄Π° (ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ)
. ΠΡΠΎ Π»ΡΡΡΠΈΠΉ
ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ½ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½Π΅Π΅.
ΠΠΎΠΏΠ½Π΅ΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ³Π»ΡΠ±ΠΆΠ΅. Π¦ΠΈΠΊΠ» for
ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·
ΡΡΡΡΠΊΡΡΡΡ for <item> in <iterable>
. ΠΠ΅Π²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ item
. Π ΠΏΡΠ°Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ enumerate()
. ΠΡΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΉ
ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 1: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ΄ ΡΠΈΠΊΠ»Π°. ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ itertools. ΠΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π ΡΠ°ΠΌΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ Π² ΡΡΠ°ΡΡΠ΅ Β«ΠΡΠ΅ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΒ». Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°ΡΠ°Ρ .
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ product() Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΠΈ
ΠΡΠ΅ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Β«ΠΏΠ»ΠΎΡΠΊΠΈΠΉΒ»
ΠΊΠΎΠ΄ Π»ΡΡΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ. ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ
ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ:
def find_twelve(num_list1, num_list2, num_list3):
"""ΠΠ°Ρ
ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠΈΡΠ΅Π» ΠΈΠ· ΡΡΠ΅Ρ
ΡΠΏΠΈΡΠΊΠΎΠ²,
Π² ΡΡΠΌΠΌΠ΅ Π΄Π°ΡΡΠΈΠ΅ 12"""
for num1 in num_list1:
for num2 in num_list2:
for num3 in num_list3:
if num1 + num2 + num3 == 12:
return num1, num2, num3
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΠΊΠ»Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ product()
. Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡ
Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅.
from itertools import product
def find_twelve2(num_list1, num_list2, num_list3):
for n1, n2, n3 in product(lst1, lst2, lst3):
if n1 + n2 + n3 == 12:
return n1, n2, n3
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ
ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΈΠΊΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ product()
, Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ
ΡΡΠΎΠ²Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ. ΠΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ islice(), ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΊΠ»Π°
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΉΠ» Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΠΎΡΡΠΎΠ² Reddit ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
py-guide: Python guidebook, written for humans.
---
Python 3 Death Clock
---
Run any Python Script with an Alexa Voice Command
---
<...>
ΠΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΠΎΠΉ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ---
, Π° Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. ΠΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΠΌ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ enumerate()
, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ ΠΏΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌ:
def parse_titles(filename):
"""Π§ΠΈΡΠ°Π΅ΠΌ ΠΈΠΌΡ ΡΡΠ°ΡΡΠΈ reddit ΠΈΠ· ΡΠ°ΠΉΠ»Π°"""
with open(filename,'r') as fp:
for i, line in enumerate(fp):
# ΠΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ
if i% 2 == 0;
yield line.strip()
ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ islice()
ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ itertools ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΌ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄. Π€ΡΠ½ΠΊΡΠΈΡ islice (seq, start, end, step)
ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠΈ ΡΠ΅ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ΅Π·Π° (list[start:stop:step])
. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° step Π² 2 (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 1).
from itertools import islice
def parse_ttiles_v2(filename):
with open(filename, 'r') as fp:
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ step=2
# ΡΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ '---'
for line in islice(fp, 0, None, 2):
yield line.strip()
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ takewhile Π²ΠΌΠ΅ΡΡΠΎ break
ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½Π°Π΄ΠΎ Π»ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ ΡΠΈΠΊΠ» Π² ΡΠ°ΠΌΠΎΠΌ Π΅Π³ΠΎ Π½Π°ΡΠ°Π»Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
for user in users:
# ΠΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π΅ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
# Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ
if not is_qualified(user):
break
# ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ...
ΠΠ»Ρ ΡΠ°Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ takewhile()
. Π€ΡΠ½ΠΊΡΠΈΡ takewhile
(predicate, iterable)
ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈΠ· iterable
ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π²
ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True
, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠΈΠΊΠ» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ, Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠΊΠ» ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ.
from itertools import takewhile
for user in takewhile(is_qualified, users):
# ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ...
Π itertools Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ:
- ΡΡΠ½ΠΊΡΠΈΡ
chain()
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ»ΠΎΡΠΊΠΈΠΌΠΈ Π΄Π²ΡΡ ΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ; - ΡΡΠ½ΠΊΡΠΈΡ
zip_longest()
ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΠ» ΡΡΠ°Π·Ρ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΠΌΠΈ ΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠ΅ΠΉΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°
ΠΡΠΎΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ itertools, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
def sum_even_only(numbers):
"""Π‘ΡΠΌΠΌΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°"""
result = 0
for num in numbers:
if num % 2 == 0:
result += num
return result
ΠΠ»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ
Π½Π΅ΡΠ΅ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π» Π² ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° Π·Π΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ if
. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ°ΡΡΠΎ ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ
ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ
ΡΠ΅ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π»:
def even_only(numbers):
for num in numbers:
if num% 2 == 0:
yield num
def sum_even_only_v2(numbers):
"""Π‘ΡΠΌΠΌΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°"""
result = 0
for num in even_only(numbers):
result += num
return result
ΠΠΎΡΠ»Π΅ Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ numbers
ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ even_only
, ΡΡΠ½ΠΊΡΠΈΠΈ sum_even_only_v2
Π½Π΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° β ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ.
sum(num for num in numbers if num% 2 == 0)
.Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 2: ΡΠ°Π·Π±Π΅ΡΠΈΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ Ρ ΡΠΈΠΊΠ»ΠΎΠΌ, Π½Π°ΠΌ Ρ
ΠΎΡΠ΅ΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ
, ΠΏΠ΅ΡΠ°ΡΡ Π»ΠΎΠ³ΠΎΠ² ΠΈ Ρ. Π΄. ΠΠ°ΠΆΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΊΡΡΠΊΠΈ
ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΊ ΡΠΎΠΉ ΠΆΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°Π½Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΡΠ΅Π»ΠΊΠ΅.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π½Π° Π½Π΅ΠΊΠΎΠ΅ΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 30 Π΄Π½Π΅ΠΉ. ΠΠ°Π΄Π°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° β Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ,
Π²Ρ
ΠΎΠ΄ΠΈΠ²ΡΠΈΡ
Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΡΠ°, ΠΈ Π²ΡΡΠ»Π°ΡΡ ΠΈΠΌ Π·Π° ΡΡΠΎ Π½Π°Π³ΡΠ°Π΄Π½ΡΠ΅ Π±Π°Π»Π»Ρ.
import time
import datetime
def award_active_users_in_last_30days():
"""ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅Ρ
ΡΠ·Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ Ρ 8 Π²Π΅ΡΠ΅ΡΠ° Π΄ΠΎ 10 Π²Π΅ΡΠ΅ΡΠ°
Π² Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π½ΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
30 Π΄Π½Π΅ΠΉ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΠΌ Π±ΠΎΠ½ΡΡΠ½ΡΠ΅ Π±Π°Π»Π»Ρ
"""
days = 30
for days_delta in range(days):
dt = datetime.date.today()-datetime.timedelta(days=days_delta)
# 5: Saturday, 6: Sunday
if dt.weekday() not in (5, 6):
continue
time_start = datetime.datetime(dt.year, dt.month, dt.day, 20, 0)
time_end = datetime.datetime(dt.year, dt.month, dt.day, 23, 0)
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² unix timestamp, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ORM
ts_start = time.mktime(time_start.timetuple())
ts_end = time.mktime(time_end.timetuple())
# ΠΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ·Π΅ΡΠΎΠ² ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ 1000 Π±ΠΎΠ½ΡΡΠ½ΡΡ
Π±Π°Π»Π»ΠΎΠ²
for record in LoginRecord.filter_by_range(ts_start, ts_end):
# ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ
send_awarding_points(record.user_id, 1000)
ΠΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ. ΠΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 30 Π΄Π½Π΅ΠΉ, ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π³ΠΎ Π² ΡΠΎΡΠΌΠ°Ρ UNIX timestamp. ΠΡΠΈ Π΄Π²Π΅ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠ΅Π² ΡΡΠΈ Π²Π΅ΡΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΉΡΠΈ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΠΎΡΠ²ΡΡΠ΅Π½ΠΎ Π΄Π²ΡΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠΌ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π·Π°Π΄Π°ΡΠ°ΠΌ: Π²ΡΠ±ΠΎΡ Π΄Π°ΡΡ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΌΠ΅ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ°ΡΡΡΠ»ΠΊΠΈ Π½Π°Π³ΡΠ°Π΄Π½ΡΡ
Π±Π°Π»Π»ΠΎΠ².
ΠΠ°ΠΊ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ
ΠΠ°ΠΊΠΎΠ²Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°? Π ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ Π΄Π΅Π½Ρ Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΡΠΏΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΠ½ΠΎΡΠΈ ΠΏΠΎ Π²ΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΈ ΡΠΈΠ΄ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅. ΠΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅: Β«ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠ·Π΅ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ 3:00 ΠΈ 5:00 Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π½ΠΈ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 30 Π΄Π½Π΅ΠΉΒ».
ΠΠ΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ
Π½ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ° Π½Π° ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°
ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π°, ΡΡΠ°Π½Π΅Ρ ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. ΠΠ½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΡΠ°Π·Π½ΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ: Β«Π²ΡΠ±ΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡΒ» ΠΈ Β«ΡΠ°Π·ΠΎΡΠ»Π°ΡΡ Π½Π°Π³ΡΠ°Π΄Π½ΡΠ΅ Π±Π°Π»Π»ΡΒ».
Π§ΡΠΎΠ±Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ, Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅ΠΉ Π·Π° Β«Π²ΡΠ±ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΒ», ΠΎΡ ΡΠ΅Π»Π° ΡΠΈΠΊΠ»Π°. Π Π² ΡΡΠΎΠΌ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΡΡΠ°ΡΡΠΉ Π΄ΡΡΠ³, ΡΡΠ½ΠΊΡΠΈΡ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»Π° ΡΠΈΠΊΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°
Π§ΡΠΎΠ±Ρ ΠΎΡΠ²ΡΠ·Π°ΡΡ Π²ΡΠ±ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡ ΡΠΈΠΊΠ»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ gen_weekend_ts_ranges()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ
Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ UNIX:
def gen_weekend_ts_ranges(days_ago, hour_start, hour_end):
"""Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΡΠ±Π±ΠΎΡΠ°-Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ UNIX timestamp.
"""
for days_delta in range(days_ago):
dt = datetime.date.today()-datetime.timedelta(days=days_delta)
# 5: Saturday, 6: Sunday
if dt.weekday() not in (5, 6):
continue
time_start = datetime.datetime(dt.year, dt.month, dt.day, hour_start, 0)
time_end = datetime.datetime(dt.year, dt.month, dt.day, hour_end, 0)
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² unix timestamp, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ORM
ts_start = time.mktime(time_start.timetuple())
ts_end = time.mktime(time_end.timetuple())
yield ts_start, ts_end
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ°ΡΡΡ Π·Π°Π΄Π°ΡΡ Β«ΡΠ°Π·ΠΎΡΠ»Π°ΡΡ Π½Π°Π³ΡΠ°Π΄Π½ΡΠ΅ Π±Π°Π»Π»ΡΒ» ΠΈ Π½ΠΎΠ²ΡΡ Π·Π°Π΄Π°ΡΡ Β«ΡΠ°Π·ΠΎΡΠ»Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΒ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΊΠ»Π°:
def award_active_users_in_last_30days_v2():
"""ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ½ΡΡΠ½ΡΠ΅ Π±Π°Π»Π»Ρ"""
for ts_start, ts_end in gen_weekend_ts_ranges(30, hour_start=20, hour_end=23):
for record in LoginRecord.filter_by_range(ts_start, ts_end):
send_awarding_points(record.user_id, 1000)
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³ΠΈ
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΊΡΠ°ΡΠΊΠΎ ΠΏΡΠΎΠ±Π΅ΠΆΠ°Π»ΠΈΡΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎΒ» ΠΊΠΎΠ΄Π° ΡΠΈΠΊΠ»ΠΎΠ². ΠΠ°ΡΠ΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π»ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡΡ Β«Π΄ΡΠΎΠ±Π»Π΅Π½ΠΈΡΒ» ΠΊΠΎΠ΄Π° Π² ΡΠΈΠΊΠ»Π΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°Π΄Π°Ρ.
ΠΡΠ°ΡΠΊΠΎ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ :
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΡΠΈΠΊΠ»ΠΎΠ²;
- ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ
ΡΠ»ΡΡΡΠΈΡΡ ΡΠΈΠΊΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ itertools;
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°;
- Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π±ΠΈΠ·Π½Π΅Ρ-Π·Π°Π΄Π°Ρ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°ΡΡΠ°Π½ΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ²;
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° Π² ΡΠΈΠΊΠ»Π΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ
ΡΠ°Π·Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π½Π°Π΄Π΅Π΅ΡΡΡ, ΡΡΠΎ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΌΡ. Π£Π΄Π°ΡΠΈ Π² ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ!
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ