質問: list(map(str,winner_2)) print('\n'.join(map(' '.join,winner_2))) ```
回答: ※けなす意図はなく正直に「どうすると良くなるだろう」を記載します。 スマートかどうか以前に「長い」「読みにくい」という印象を受けました。多分、コードが機能単位に分割されていないからだと思います。 この手の問題では入力から導き出される出力を求められますので、まずは以下のように機能分割すると良いと思います。 `入力`->`入力値のパース`->`データの構造化`->`出力値の計算`->`出力` 入力値のパース ======== 入力をバカ正直にパースすると以下のようなコードになります。これをどこか一箇所に固めておくだけでも少々読みやすくなると思います。 ``` p_1, p_2 = input().split() # 選手1組目のゼッケン p_3, p_4 = input().split() # 選手2組目のゼッケン e_1, e_2, e_3, e_4 = map(int, input().split()) # 1回戦のタイム f_1, f_2 = map(int, input().split()) # 2回戦のタイム ``` データの構造化 ======== これは後処理を意識しながらどのようなデータ構造にするか決めるんですが、まぁここは好き好きです。私なら以下のようなデータ構造にして別途`winner(**scores)`のような関数を用意します。 ``` games1 = ({p_1: e_1, p_2: e_2}, {p_3: e_3, p_4: e_4}) def winner(**scores): best = min(scores.values()) for player in scores: if scores[player] == best: return player else: pass # 同着は絶対にないものとする game2_players = [winner(**game) for game in games1] ``` 出力値の計算 & 出力 ============ あとはおまかせします。 追記:コードのデバッグはしてませんのでバグが残ってたらすいません。 ==================================