for文について、イマイチ、理解できません(pythonでやっています)


# 以下は直感的に理解できるんですが...
a=[1,2,3,4]
for b in a:
print(b)

1
2
3
4

# 次の場合や、
for b in a:
print(c)

4
4
4
4

# 次の場合など、
#どうして、こうなるのか、しっくり来ないのです。

for b in a:
print('c')

c
c
c
c



a[0]=1
a[1]=2
a[2]=3
a[3]=4
で、aの添字、[0][1][2][3]とprint関数が、なにか関係しているような気もするのですが...

どうぞ、ご教示くださいませ〜


回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2020/03/29 15:55:09

回答3件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

a=[1,2,3,4]       # トランプの手札を四枚持ってます
for b in a:       # 持っている手札を一枚ずつ開きます(開いた札が b
    print(b)      # その札の内容を見せます
    print('c')    # (開いた手札に関係なく)ジョーカーを見せます

他の言語と比べて、for は、条件を達するまでのループという意味合いがなくなってるので、そういった辺りの違いはあるかも。
回数でループしたい、となったら、こんな感じでしたっけ?

for i in range(10):
    ...
id:torimaki

a-kuma3さま
いつも、お手数をおかけしております汗

以下の2例について、直感的に分かるんです。

a=[1,2,3,4]
for i in a:
print(i)

1
2
3
4

for i in range(4):
print(i)
0
1
2
3


けれど、以下の例、
a=[1,2,3,4]
for i in a:
print('Jocker')

Jocker
Jocker
Jocker
Jocker

について(慣れてしまい、結果は分かるのですけれど)そのたびに「?」な感じが残ります。

リスト化した数字をaに入れ、それをfor文で回しているのに、なぜJockerが4回出力されるんだろう、といった感じです(このへんが、うまく言えなくって、その分からなさが、お伝えできないかもです。恐縮です)

a[0]=1
a[1]=2
a[2]=3
a[3]=4

といった0から3のインデックスが、Jockerと対応して、順番に出力されているのかな、とも思ったりしておりますが...

2020/03/24 09:51:44
id:rsc96074 No.2

回答回数4503ベストアンサー獲得回数437

 2番目のプログラムを実行すると、うちのPCでは、エラーになります。

NameError: name 'c' is not defined

 3番目のプログラムの'c'は文字列だから、当たり前のような気がします。(^_^;
 昔のBASICでは、Pythonと違って、文字列変数と数値変数の違いが明確だったからそう感じるのかな。

 ちなみに、Pythonのfor文は、他の言語におけるforeach文に相当します。
https://note.nkmk.me/python-for-usage/

id:ramboomilk No.3

回答回数1ベストアンサー獲得回数0

for b in a:
(条件判定ライン)
:試験時間が残っているかチェック

(判定が”真”なら作業実行)

print(c)
(作業実行ライン)※作業内容の指定と実行
:解いていない試験問題を解く


4
4
4
4
(作業結果の表示)
:答え1
  答え2
  答え3
  答え4


判定が”真”で 指定作業が print(c) なら
(どこか他の行で入れたはずの)という容器(定数または変数)の
中身(この場合は整数4)を画面に表示。

判定が”真”で 指定作業が print('c') なら
(この行で指定した)文字列 c を画面に表示。

※この場合はたまたま、容器の名前と指定文字列が
 同じだったから、まぎらわしいだけ。
 print('d') なら 当然
 d
 d
 d
 d
という結果表示に。

  • id:outofjis
    pythonは良く知らんが、
    for文に関係なく突然出てきた「c」を表示させようとする意図は何?


    それと、print('c')として、「c」の文字が表示されるのは
    至極当然のような気がするが。
  • id:torimaki
    outofjisさま コメントありがとうございます。

    「'c'」としたのは「文字を入れたら、どうなるか」と思ったからです。
    このばあい、cが4回出力されるのは、どういう立て付けからでしょう。

    よろしくお願いいたします。
  • id:outofjis
    for文に限らず、ループ文というのは、
    決まった条件を満たす限り、同じ処理を繰り返します。

    この場合は、aというグループにある数字を、
    最初から順に、グループの最後がくるまで繰り返し処理を行います。

    aには、4つの数字が入っているので、
    1番目、2番目、3番目、4番目 と4回繰り返すのですが
    「b」には、1回目のループでは最初の要素(この場合は0)、
    2回目のループでは次の要素(この場合は1)、、、、が割り振られます。


    bは参照してもしなくても、要素が4つあるので4回処理がなされます。
    print('c')を行えば、「c」という文字が4回書かれますし、
    「c」に入っている値(たぶんほかのどこかで入れた値)が表示されます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません