リストを作ることやrangeを使う
そのとおりです。
連番付きの変数を使うことになったら、それはリストの出番です。 変数名の番号はプログラムで変更できない(方法が無くはないが非推奨)ので、リストの添字にします。
numberというリストを作って、number1-> number[0], number2-> number[1]のように置き換えます。
これで、元のプログラムを置き換えてみます。
ただし、通常リストは空で作って、入れていくという方法で作るので、
python
1number[0] = input("1枚目の番号を入力してください:\n")
という書き方はできません。 そんなの無いよと怒られます。
リストにアイテムを追加するには append メソッドを使います。
みやすいように冗長に書きます。
python
1number = []
2
3num = input("1枚目の番号を入力してください:\n")
4number.append(num)
5print(number[0], "が入力されました")
6
7num = input("2枚目の番号を入力してください:\n")
8number.append(num)
9print(number[1], "が入力されました")
10
11num = input("3枚目の番号を入力してください:\n")
12numer.append(num)
13print(number[2], "が入力されました")
14
15
16print(' 1枚目:'+str(number[0])+'\n'+\
17 ' 2枚目:'+str(number[1])+'\n'+\
18 ' 3枚目:'+str(number[2])+'\n'+\)
numberリストに順に入力値が入りました。 これでループにできます。
python
1num = input("?枚目の番号を入力してください:\n")
2number.append(num)
3print(number[i], "が入力されました")
まずは、これがループの1つ分ですね。 添字は i にしてありますが、 inputの引数の ? をどうしましょうか。
i が 0 のときに 1、 i が 1 のとき 2 になるようにすればいいので、 ? = i + 1 です。pythonはf文字列をつかうと変数を文字列に入れられます。 これでループにしてみす。
python
1for i in range(3):
2 num = input(f"{i+1}枚目の番号を入力してください:\n")
3 number.append(num)
4 print(number[i], "が入力されました")
こんな感じです。
出力の部分も同じような感じなので、やってみてください。
追記
BODYというメール本文という変数に代入したい
いろいろなやりかたがありますが、簡単にやるなら、文字列も配列と同じように継ぎ足していくことができるのでそれを使います。
例を出すとこんな感じ。最後のように += も使えます。
python
1iroha = ''
2iroha = iroha + "いろは"
3iroha = iroha + "にほへ"
4iroha += "とちり"
5print(iroha)
6# -> いろはにほへとちり
質問のコードをfor文で回すとこんな感じですかね。
python
1BODY = '以下を送信します\n')
2for i in range(3):
3 BODY += f"{i + 1}枚目: {number[i]}\n"
4BODY += 'よろしくお願いいたします。\n'
ちなみに、質問のコードが print()でできているのが気になります。 わかっているのであればいいのですが、print()は標準出力に出すだけで、変数を変更するなどのことはできません。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/06/08 12:40
2023/06/08 13:19
2023/06/09 02:35
2023/06/09 05:13
2023/06/09 05:34