人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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関数が、なにか関係しているような気もするのですが...

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




●質問者: torimaki
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

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

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

for i in range(10):
 ...

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と対応して、順番に出力されているのかな、とも思ったりしておりますが...

2 ● rsc

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

NameError: name 'c' is not defined

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

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


3 ● ramboomilk

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

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

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


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


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

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

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ