qlocktwo.py
· 1.6 KiB · Python
Raw
from datetime import datetime
from textwrap import wrap
hour = ["twelve", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven"]
letters = "ITLISASAMPMACQUARTERDCTWENTYFIVEXHALFSTENFTOPASTERUNINEONESIXTHREEFOURFIVETWOEIGHTELEVENSEVENTWELVETENSEOCLOCK" # 110 letters
def get_led_matrix():
out = "0" * len(letters)
time = get_time_in_words()
for word in time.split():
start = find_substr_in_str(word.upper(), letters)
end = start + len(word)
out = out[:start] + "1" * len(word) + out[end:]
return out
def find_substr_in_str(needle, haystack):
for c in range(0,len(haystack)):
if haystack[c:c+len(needle)] == needle:
return c
def get_time_in_words(time=None):
if not time:
time = datetime.now()
h,m = hour[time.hour%12], time.minute
if time.second > 30:
m += 1
m = round(m/5)*5
if m == 0:
return f"it is {h} oclock"
elif m == 5:
return f"five past {h}"
elif m == 10:
return f"ten past {h}"
elif m == 15:
return f"quarter past {h}"
elif m == 20:
return f"twenty past {h}"
elif m == 25:
return f"twentyfive past {h}"
elif m == 30:
return f"half past {h}"
elif m == 35:
return f"twentyfive to {h}"
elif m == 40:
return f"twenty to {h}"
elif m == 45:
return f"quarter to {h}"
elif m == 50:
return f"ten to {h}"
elif m == 55:
return f"five to {h}"
if __name__ == "__main__":
print(datetime.now())
print(get_time_in_words())
print("\n".join(wrap(get_led_matrix(),11)))
print("\n".join(wrap(letters,11)))
| 1 | from datetime import datetime |
| 2 | from textwrap import wrap |
| 3 | |
| 4 | hour = ["twelve", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven"] |
| 5 | letters = "ITLISASAMPMACQUARTERDCTWENTYFIVEXHALFSTENFTOPASTERUNINEONESIXTHREEFOURFIVETWOEIGHTELEVENSEVENTWELVETENSEOCLOCK" # 110 letters |
| 6 | |
| 7 | def get_led_matrix(): |
| 8 | out = "0" * len(letters) |
| 9 | time = get_time_in_words() |
| 10 | for word in time.split(): |
| 11 | start = find_substr_in_str(word.upper(), letters) |
| 12 | end = start + len(word) |
| 13 | out = out[:start] + "1" * len(word) + out[end:] |
| 14 | return out |
| 15 | |
| 16 | def find_substr_in_str(needle, haystack): |
| 17 | for c in range(0,len(haystack)): |
| 18 | if haystack[c:c+len(needle)] == needle: |
| 19 | return c |
| 20 | |
| 21 | def get_time_in_words(time=None): |
| 22 | if not time: |
| 23 | time = datetime.now() |
| 24 | h,m = hour[time.hour%12], time.minute |
| 25 | if time.second > 30: |
| 26 | m += 1 |
| 27 | m = round(m/5)*5 |
| 28 | if m == 0: |
| 29 | return f"it is {h} oclock" |
| 30 | elif m == 5: |
| 31 | return f"five past {h}" |
| 32 | elif m == 10: |
| 33 | return f"ten past {h}" |
| 34 | elif m == 15: |
| 35 | return f"quarter past {h}" |
| 36 | elif m == 20: |
| 37 | return f"twenty past {h}" |
| 38 | elif m == 25: |
| 39 | return f"twentyfive past {h}" |
| 40 | elif m == 30: |
| 41 | return f"half past {h}" |
| 42 | elif m == 35: |
| 43 | return f"twentyfive to {h}" |
| 44 | elif m == 40: |
| 45 | return f"twenty to {h}" |
| 46 | elif m == 45: |
| 47 | return f"quarter to {h}" |
| 48 | elif m == 50: |
| 49 | return f"ten to {h}" |
| 50 | elif m == 55: |
| 51 | return f"five to {h}" |
| 52 | |
| 53 | if __name__ == "__main__": |
| 54 | print(datetime.now()) |
| 55 | print(get_time_in_words()) |
| 56 | print("\n".join(wrap(get_led_matrix(),11))) |
| 57 | print("\n".join(wrap(letters,11))) |