voice_channel.play(player, after=lambda e: print('Player error: %s' % e) if e else None)
bind()
, потом, как-то серверу передать порт, на котором клиент будет слушать ответ от сервера. Запустить поток, который будет обслуживать входящие сообщения от сервера. (Итого, два потока, один для посылки серверу, второй для ответов от сервера).recv()
а data, addr = sock.recvfrom(128)
, получая сразу IP-адрес клиента. Вот эти адреса прихраниваете в массивчик, они и будут вашими клиентами.import string
print([c*i for i,c in enumerate(string.ascii_lowercase,1)])
['a', 'bb', 'ccc', 'dddd', 'eeeee', 'ffffff', 'ggggggg', 'hhhhhhhh', 'iiiiiiiii', 'jjjjjjjjjj', 'kkkkkkkkkkk', 'llllllllllll', 'mmmmmmmmmmmmm', 'nnnnnnnnnnnnnn', 'ooooooooooooooo', 'pppppppppppppppp', 'qqqqqqqqqqqqqqqqq', 'rrrrrrrrrrrrrrrrrr', 'sssssssssssssssssss', 'tttttttttttttttttttt', 'uuuuuuuuuuuuuuuuuuuuu', 'vvvvvvvvvvvvvvvvvvvvvv', 'wwwwwwwwwwwwwwwwwwwwwww', 'xxxxxxxxxxxxxxxxxxxxxxxx', 'yyyyyyyyyyyyyyyyyyyyyyyyy', 'zzzzzzzzzzzzzzzzzzzzzzzzzz']
def f(x):
return {
'a': 1,
'b': 2
}.get(x, 9) # 9 is default if x not found
...
f('c') # 9
f('a') # 1
f('b') # 3
def get_temp_description(temp):
return {
temp < -20: 'Холодно',
-20 <= temp < 0: 'Прохладно',
0 <= temp < 15: 'Зябко',
15 <= temp < 25: 'Тепло',
25 <= temp: 'Жарко'
}[True]
dataset = [
["route1","car1","alex"],
["route1","car1","boris"],
["route2","car1","alex"],
["route2","car1","boris"],
["route1","car1","john"],
["route3","car2","alex"],
["route1","car2","alex"],
["route1","car3","alex"],
["route1","car2","alex"],
["route1","car2","alex"],
["route3","car1","alex"],
]
outdataset = {}
for route,car,driver in dataset:
key = (route,car)
_d = outdataset.get(key,set())
_d.add(driver)
outdataset[key] = _d
for route,car in outdataset.keys():
print(route,car,", ".join(outdataset[(route,car)]))
route1 car1 john, alex, boris
route2 car1 alex, boris
route3 car2 alex
route1 car2 alex
route1 car3 alex
route3 car1 alex