Я нифига не понял вашего вопроса и какие у вас проблемы.
Но вот вам совсем неправильное решение. Параметр имени вобще не передавался.
Подумайте об этом.
import random
from itertools import cycle
def game():
bank = 100
while bank > 0:
bank -= yield bank
print("...осталось", bank)
print("game over!")
yield None
def player(name):
print("Я", name, "!")
have = 0
rest = yield 0
while have < 100500:
take = random.randint(1, min(10, rest))
have += take
print(name, "взял" + name[7:8], take)
rest = yield take
if rest is None:
print(name, "лошара!")
break
if name[0] == 'К' and random.random() > .5:
print("Да ну вас нафег, пусть за меня Вася играет!")
yield from player("Вася")
def play(game, *players):
take = None
[p.send(None) for p in players]
for player in cycle(players):
try:
rest = game.send(take)
take = player.send(rest)
except StopIteration:
break
play(game(), player("Ослик"), player("Суслик"), player("Паукан"), player("Кисонька"))