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

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

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

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Q&A

解決済

2回答

397閲覧

python3ビギナーです。代入について教えてください

kaori2020

総合スコア16

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

0グッド

0クリップ

投稿2020/11/29 06:43

python 3 勉強中です。以下コードの出力がなぜ答えのようになるのか分かりません。
ご説明いただけますと幸いです。
よろしくお願いいたします。

a,b=0,1 a <10: print(a, end='.') a,b = b, a+b

正答:0,1,1,2,3,5,8

なぜ正答のようになるのでしょうか?
a=1が2回繰り替えされているのはどうしてでしょうか?

a=0であればa=bなのでb=0、
a=1であればa=bなのでb=1+1で2
a=2であればa=bなのでb=2+2で4

としか考えがつかないのですが、、
どなかたご説明ください。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

a=0であればa=bなのでb=0、

そもそも、代入の意味がわかってないのではないでしょうか。
a=bという記述は「abが等しい」という意味ではありません。
bの値を、新しくaの値とする」「さっきまでのaの値を捨てて、新しいaの値は、今のbの値を使う」という動作を意味します。

投稿2020/11/29 08:29

otn

総合スコア84800

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

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

kaori2020

2020/12/01 02:26

ご回答ありがとうございました。まさに代入の意味が混乱していました。「さっきまでのaを捨てて、、というご説明がとでも分かりやすかったです。大変助かりました。
guest

0

ベストアンサー

pythonの代入では、右辺をすべて計算してから代入を行います。

最初の状態
aは0でbは1です。

1回目の a,b = b, a+b を行うと、まず右辺を計算して、1と1が計算されます。
(処理系的には(b, a+b)というタプルを計算して(1,1)というタプルが返ってきます)
この次に代入が起こり、aには1が代入され、bには1が代入されます。

2回目の a,b = b, a+b を行うと、まず右辺を計算して、1と2が計算されます。
この次に代入が起こり、aには1が代入され、bには2が代入されます。

3回目の a,b = b, a+b を行うと、まず右辺を計算して、2と3が計算されます。
この次に代入が起こり、aには2が代入され、bには3が代入されます。

4回目の a,b = b, a+b を行うと、まず右辺を計算して、3と5が計算されます。
この次に代入が起こり、aには3が代入され、bには5が代入されます。

それぞれでのaの値を並べると0,1,1,2,3,5となります。

投稿2020/11/29 08:14

ppaul

総合スコア24666

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

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

kaori2020

2020/12/01 02:28

ご丁寧なご回答をありがとうございました。おかげさまで、やっと理解ができました。左辺と右辺が同時に代入されるかと思っていたのですが、まず右辺からなのですね。 なぜ、a=1が2回あるのかも、スッキリ分かりました。大変ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問