Форум сайта python.su
0
Добрый день.
Нужна помощь опытных “питонистов” 
Я создал метод, код ниже, который скорее всего можно хорошенько сократить и сделать его более “питонистым”, но я ещё в этом деле неопытен. Могли бы вы глянуть своим опытным взглядом и дать пару подсказок?
И ещё, если не затруднит, поправить одно условие, оно закомментировано в коде, 2 дня уже ломаю голову над этим условием, не получается.
вот код:
def play(self): """Start the WarGame.""" new_players = self.players[:] # make list copy while len(new_players) != 1: # start loop until one object remains in list self.deck.deal(new_players, per_hand=1) # hand over to each player one card m = new_players[0].total n = 0 for player in new_players: print(player) """Need this condition but it's not work for player in new_players: # if the all objects in the list are equal, start the loop over if new_players.count(player.total) >= len(new_players): self.play()""" # find those who need to kill for player in new_players: if player.total < m: m = player.total n = new_players.index(player) # kill'em all for player in new_players: if m == player.total: n == new_players.index(player) print("R.I.P.:", player.name) new_players.remove(player) # clear copy list for player in new_players: player.clear() print("Win!:", player.name) # clear list for player in self.players: player.clear()
Отредактировано JOHN_16 (Дек. 24, 2018 10:59:52)
Офлайн
0
Добрый день.
Спасибо всем за участие, если кому интересно я нашёл ответ на свой вопрос.
def play(self): """Start the WarGame.""" new_players = self.players[:] while len(new_players) != 1: self.deck.deal(new_players, per_hand=1) for player in new_players: print(player) min_score = min(player.total for player in new_players) dead_players = [player for player in new_players if player.total <= min_score] living_players = [player for player in new_players if player.total > min_score] if not living_players: # everybody died, play again for player in new_players: player.clear() print() continue # kill'em all for player in dead_players: print("R.I.P.:", player.name) new_players = living_players for player in new_players: player.clear() print("Win!:", player.name) for player in self.players: player.clear()
Отредактировано Guguzjaka (Дек. 25, 2018 10:38:41)
Офлайн