LoginSignup
2

More than 5 years have passed since last update.

paizaスキルチェックの表を出力する問題におけるPython3での正解方法

Last updated at Posted at 2018-10-18

paizaのスキルチェックで、例えば以下のような出力をすれば正解となる問題があったとします。

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

当初、自分は以下のようなPython3のコードを書きましたがどうしても通りませんでした。

cells = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]

for row in cells:
  for cell in row:
    print(cell, end = " ")
  print()

paizaには以下のようにありますが……

期待する出力と出力結果が同じに見えるのに失敗になる場合、半角スペースや改行の数が異なっていると考えられます。
余分な半角スペースや改行がないかを今一度ご確認ください。

「行の末尾にスペースを入れる/入れない」「最終行の末尾に改行を入れる/入れない」と、考えられるパターンをいろいろ試してもすべて不正解になります。

困り果ててしばらくの間、放置していたのですが、改めていろんな出力の仕方を調べたところ、以下のような書き方によって解決できました。

cells = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]

for row in cells:
  print(*row)

print(*list)で「listの各要素を一つずつ展開して出力せよ」という意味になります。どうもこれを使わないと通らないみたいなんですね。

このアスタリスクの使い方は、少なくともネット上ではあまりメジャーでなく、ノーヒントで辿り着くのは難しいと思ったので記事として書いておきました。
@shiracamus さんよりコメント欄にてご指摘いただきました。zip関数で引数展開はよく使われるとのことです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2