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

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

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

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

Q&A

解決済

3回答

1000閲覧

分からないことがあるので教えてください。

t_abroad

総合スコア1

Python

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

0グッド

0クリップ

投稿2020/10/21 13:48

前提・実現したいこと

初心者です。PythonでWhile文を使ってユークリッドの互除法のコードをかきたいのですが、以下のコードではエラーが出てしまいます。その原因と解決策を掲示してください。

発生している問題・エラーメッセージ

File "<ipython-input-11-cbc73e5d6a96>", line 10 m%n = r ^ SyntaxError: can't assign to operator

該当のソースコード

n = int(input('n ')) r = m%n while r == 0: print('n ') else: n = m r = n m%n = r

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

pepperleaf

2020/10/21 14:09

m%n = r = の左側が、式になってるのが、エラーなんですが、このコードだけでは、何したいか見えません。 また、while のループもあってますか? (処理の内容)
meg_

2020/10/21 22:48

質問のタイトルは具体的な内容を書いてください。
guest

回答3

0

エラーは、最後の行m%n = rにおいて、代入先であるm%nが変数とは認められない形をしているため、SyntaxError: cannot assign to operator(演算子%がこんなところにあるのは文法エラーです)と出ているものです。

またこれを修正したとしても、すぐに、2行目のr = m%nにおいて、別のエラーが出ます。今度は代入元であるm&nは=の右辺にあるため、式として認められ、さきほど同じエラーは出ないのです。しかし、m&nの要素である変数mが未定義であるため、NameError: name 'm' is not definedというエラーが出ます。

いずれも、Python以前に、プログラミングとして基本的なことがまだ理解されていない状況です。以下のあたりをまずは学習され、もっと簡単なサンプルコードから動きを勉強したほうがよいでしょう。
参考: 変数の基本

投稿2020/10/21 14:08

編集2020/10/21 14:26
toast-uz

総合スコア3266

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

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

0

ベストアンサー

エラーの原因は他の回答者の方が書いておられるので、mも入力して最大公約数(G.C.D.)を求めるコードを書いておきます。

Python

1# 2つの数値を入力 2n = int(input('n: ')) 3m = int(input('m: ')) 4 5# nの値がmより大きかったら、両者の値を交換する 6if n > m: 7 n, m = m, n 8 9# nが0でない間、繰り返しmにnの値、nにm%nの値を代入する 10while n != 0: 11 m, n = n, m % n 12 13# nが0になったら、mの値が最大公約数(G.C.D.) 14print('G.C.D.: ', m)

投稿2020/10/21 14:18

Daregada

総合スコア11990

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

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

t_abroad

2020/10/21 14:44

ありがとうございます。参考にします。
guest

0

そもそもこのコードだと、「m」に何が入っているのかわかりませんので、何とも言えませんが、エラーになっているのは以下の最後の行で、

python

1 n = m 2 r = n 3 m%n = r

その「m%n」は mをnで割った余りの「値」であって、そこにrに入っている「値」を代入しようとしているのでエラーになっています。

代入というのは、=の左にある変数に右の値を入れることなのは理解していますか?

そういう目で見ると、この3行はすべて逆に見えます。

python

1 m = n 2 n = r 3 r = m%n

これだとなんとなくつじつまがあいます。

ただし、mに何が入っているのかわからないので、正しいかどうかはわかりません。

投稿2020/10/21 14:06

TakaiY

総合スコア12819

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問