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)…….とカウントされていき、

それらが出力されるようになりました。

とりあえず、やりたいことはできたと思います。

 

投稿者 YOHEY_mk

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA