質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

940閲覧

if条件の結果がなぜそうなるのかがわからない(python)

miru0724

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/02 01:30

編集2021/11/02 08:47

前提・実現したいこと

python認定基礎試験の勉強をしています。
下記コードの実行結果が[100]になる理由がわかりません。
詳しい説明ができる方いらっしゃればご教授いただきたいです。

python

1prine_number_lst = [] 2for n in range(2,101): 3 for x in range(2,n): 4 if n % x ==0: 5 break 6else: 7 prine_number_lst.append(n) 8print(prine_number_lst)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/11/02 01:38

pythonの勉強中にインデントについては説明なかったですか。
miru0724

2021/11/02 01:47

elseのインデントの位置で結果が変わっていたことは理解しました。 このままのインデントで[100]となるのはnのrange(2,101)の最後尾をappendで取得しているということでしょうか? appendは最後尾に指定の桁を足すということしか理解していないのですがほかに使い方があるのでしょうか?
y_waiwai

2021/11/02 02:49

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
quickquip

2021/11/02 04:41 編集

コードが読めないので読めるようにして欲しいのは同上です。 「質問者さんがテキストかなにかで読んでいるコード」なのか「質問者さんが実行しているコード」なのかの区別が付くように書いてください。 質問者さんが実際に実行しているなら、その「実行しているコード」をコピーアンドペーストで貼って、かつちゃんと読めるようにしてください。
miru0724

2021/11/02 08:49

編集しました。実際に実行しているコードになります
guest

回答1

0

ベストアンサー

  • 下記コードの実行結果が[100]になる理由がわかりません。

公式ドキュメント 8.3. for 文には以下のように書かれています。

Document

1式リストは一度だけ評価されます。その結果はイテラブルオブジェクトにならなければなりません。 2expression_list の結果に対するイテレータが生成されます。 3その後、イテレータが与えるそれぞれの要素に対して、イテレータから返された順に一度づつ、 4スイートが実行されます。 5それぞれの要素は標準の代入規則 (代入文 (assignment statement) を参照してください) で 6target_list に代入され、その後、スイートが実行されます。 7全ての要素を使い切ったとき (シーケンスが空であったり、イテレータが StopIteration 例外を送出した 8ときは、即座に)、 else 節があればそれが実行され、ループは終了します。

for文のループ部分では一度もappendが実行されず、else節で最後に一回だけappendが実行されているので、[100]となります。

投稿2021/11/02 02:01

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miru0724

2021/11/02 02:16

ありがとうございます。[100]となるのが吞み込めていないのですがprine_number_lstに対してrange(2,101)の要素100個を返しているという認識でよいのでしょうか。
ppaul

2021/11/02 03:39

「range(2,101)の要素100個を返している」というのは何が返していると思っていらっしゃるのでしょうか。「返す」の主語がわからないので、質問が理解できません。
miru0724

2021/11/02 04:33

printで出力される[100]はprine_number_lst.append(n)で nの数がリストの要素数をprintしているということですか?わかりにくくてすみません。
ppaul

2021/11/02 07:26

いいえ、違います。 リストの要素数を出力したければ、 print(len(prine_number_lst)) です。
miru0724

2021/11/02 08:49

ではprintで出力される[100]とはいったいどこからきているのでしょうか…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問