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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

772閲覧

リンクした変数の同期

MAMUSHI

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/12/06 11:52

よろしくお願い致します

以下の変数を含むコードがあります。

python

1a = 1 2b = a 3 4a += 1 5 6print(a , b)

出力は
2 1
となると思いますが、どうしてbには+1が反映されないのでしょうか。

実際には角度の計算で

python

1import math 2angle = input("角度") 3radian = math.radians(angle)

上記のような式で両方の値を別々に使用します。
angleにはループで数値を加えるのでradianにはそれに連動して貰いたいのですが初期値で固定しています。 仕様だと思いますが、なぜこうなるのか?連動する方法は?を御教授頂ければと思います。

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

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

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

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

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

guest

回答2

0

ベストアンサー

コメントで解説を入れると、こんな感じです。

python

1a = 1 # 「1オブジェクト」がaという名前(変数名)に束縛される 2b = a # aという名前に束縛されている「1オブジェクト」がbという名前にも束縛される 3 4a += 1 # int型はimmutable(オブジェクト自身の値を変更できない)なオブジェクトであり、 5 # a += 1は a = a + 1と同じ。a + 1は新しい「2オブジェクト」を返し、 6 # 「2オブジェクト」がaという名前(変数名)に束縛される 7 # 「1オブジェクト」は何ら影響されず、bという名前に束縛されたまま 8 9print(a , b)

角度のコードに関しては、毎回radianを計算し直してください。

python

1for angle in [1,2,3]: 2 radian = math.radians(angle) 3 # ...

投稿2018/12/06 12:02

hayataka2049

総合スコア30933

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

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

0

angleにはループで数値を加えるのでradianにはそれに連動して貰いたい

クラスのプロパティにすると、わりあい扱いやすいかと思います。

Python

1import math 2 3 4class Angle: 5 def __init__(self, *, degree): 6 self._degree = float(degree) 7 8 @property 9 def degree(self): 10 return self._degree 11 12 @property 13 def radian(self): 14 return math.radians(self.degree) 15 16 @degree.setter 17 def degree(self, degree): 18 self._degree = float(degree) 19 20 @radian.setter 21 def radian(self, radian): 22 self._degree = math.degrees(radian) 23 24 25angle = Angle(degree=180) 26print(angle.degree, angle.radian) 27 28angle.degree = 360 29print(angle.degree, angle.radian) 30 31angle.radian = 0 32print(angle.degree, angle.radian)

実行結果 Wandbox

180.0 3.141592653589793 360.0 6.283185307179586 0.0 0.0

投稿2018/12/06 12:41

LouiS0616

総合スコア35660

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問