BroCode氏のYouTubeでPythonの基礎を学び中。
その中に、”Nested loop”の練習をするコーナーがあったので、その練習。
氏の動画で書いたコードはこちら。
────────
#nested loop
rows = int(input(“Enter the # of rows: “))
columns = int(input(“Enter the # of columns: “))
symbol = input(“Enter a symbol to use: “)
for x in range(rows):
for y in range(columns):
print(symbol, end=””)
print()
────────
このコードでは、列の数→行の数→記号($、¥など)を入力してもらいます。
たとえば、rows = 5, columns =3, symbol = $と入力した場合、
$$$$$
$$$$$
$$$$$
と出力します。
このコードに対して、以下の点を加えてコードを書き直したいと思いました。
・やりたかったこと:それぞれの出力に対して、何回目のループ目なのか?の数字を付け加えたい
つまり、
$$$$$(1)
$$$$$(2)
$$$$$(3)
のようにしたかった。
最初に僕が書いたコードと、どうしてつまづいたのか?を以下に記載し、そのあとに修正後のコードを記載します。
────────
#最初に書いたコード(太字部分が追加/修正した部分)
rows = int(input(“Enter the # of rows: “))
columns = int(input(“Enter the # of columns: “))
symbol = input(“Enter a symbol to use: “)
for x in range(rows):
for y in range(columns):
print(symbol, end=””)
print(f”({rows + 1})”)
────────
このコードを実行すると、以下のようになる。
────────
※最初のEnter〜〜でユーザーに入力を促す
Enter the # of rows: 5
Enter the # of columns: 3
Enter a symbol to use: F
FFF(6)
FFF(6)
FFF(6)
FFF(6)
FFF(6)
────────
一番最後に書いたprint(f”({rows + 1})”)でつまづきました。
何が問題かというと、rowsには、そもそもユーザーが入力した値が送られます。
※上記のコードだと、rowsには5を入力しているので、rows = 5の状態。
なので、{rows + 1}としてしまうと、5 + 1で6となり、FFF(6)となってしまう。
僕がやりたいのは、行の数字(1行目、2行目、3行目・・・)を末尾にくっつけたいというもの。
というわけで以下のように修正しました。
────────
#修正したコード(太字部分が追加/修正した部分)
rows = int(input(“Enter the # of rows: “))
columns = int(input(“Enter the # of columns: “))
symbol = input(“Enter a symbol to use: “)
for x in range(rows):
for y in range(columns):
print(symbol, end=””)
print(f”({x + 1})”)
────────
実行結果は以下のようになる。
────────
Enter the # of rows: 5
Enter the # of columns: 3
Enter a symbol to use: F
FFF(1)
FFF(2)
FFF(3)
FFF(4)
FFF(5)
────────
変数としてxを送って、そこに+1していく、という流れです。
xは0から始まり、ユーザーが入力した値までループを繰り返すので、
一回目のループではprint(f”({x + 1})”)の部分で(0 + 1)、二回目のループでは(1 + 1)…….とカウントされていき、
それらが出力されるようになりました。
とりあえず、やりたいことはできたと思います。