import ctypes
import time
user32 = ctypes.windll.user32
def window_title(h_wnd):
title_len = user32.GetWindowTextLengthW(h_wnd) + 1
title_buf = ctypes.create_unicode_buffer(title_len)
user32.GetWindowTextW(h_wnd, title_buf, title_len)
return title_buf.value
while True:
h_wnd = user32.GetForegroundWindow()
title = window_title(h_wnd)
print(title)
time.sleep(1)
d = {
'01': 'January',
'02': 'February',
'03': 'March',
'04': 'April',
'05': 'May',
'06': 'June',
'07': 'July',
'08': 'August',
'09': 'September',
'10': 'October',
'11': 'November',
'12': 'December'
}
a = ['03', '09', '03', '01', '01', '09', '04']
b = [d.get(i) for i in a if i in d]
from abc import ABC, abstractmethod
from math import sin, cos, pi
class Figure(ABC):
def __init__(self, height=2):
assert 1 < height < 20 # незачем больше
self.height = height
@abstractmethod
def draw(self):
pass
class Triangle(Figure):
def draw(self):
for i in range(self.height - 1):
print(f'{"/":>{self.height - i}}{"":>{i * 2}}\\')
print('─' * (self.height * 2))
class Square(Figure):
def draw(self):
w = self.height * 2 - 2
print('┌', '┐', sep='─' * w)
for _ in range(self.height - 2):
print('│', '│', sep=' ' * w)
print('└', '┘', sep='─' * w)
class Ellipse(Figure):
def __init__(self, height=7, width=None):
assert 6 < height < 20 # меньше никак
if width is None:
width = height
else:
assert 6 < width < 20
self.height, self.width = height, width
def draw(self):
buf = [[' '] * (self.width * 2) for _ in range(self.height)]
rx, ry = self.width - 1., self.height / 2 - .5
for i in range(100):
φ = i * pi / 50
buf[round(ry * (1 + sin(φ)))][round(rx * (1. + cos(φ)))] = '*'
for row in buf:
print(''.join(row))
Triangle(7).draw()
Square(7).draw()
Ellipse(7).draw()
Ellipse(17, 7).draw()
duck.about()
в обоих случаях предполагает наличие в пространстве имён объектов с именами bill
и tail
, у которых соответственно имеются нужные аттрибуты description
и length
. Так обычно не пишут, поэтому второй случай ближе к реальному коду, но в нём необходимо тогда заменить print(bill.description,tail.lenght)
на print(self.bill.description, self.tail.lenght)
.Обязательно на SSD , требуется скорость.
import ctypes
import threading
import time
def raise_async(thread, exception):
if thread.ident is None:
raise ValueError('Поток не запущен')
r = ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, ctypes.py_object(exception))
if r == 0:
raise ValueError('Неправильный идентификатор потока')
elif r > 1:
ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, 0)
raise SystemError('Неожиданное состояние среды выполнения')
def f():
print('Поток запущен')
try:
while True:
time.sleep(1)
except ZeroDivisionError:
print('Эй! Я же ничего не делил!')
if __name__ == '__main__':
t = threading.Thread(target=f)
t.start()
time.sleep(3)
raise_async(t, ZeroDivisionError)
t.join()