分からない事
pytonのプログラム勉強でANDの効果を持ったプログラムを作ったのですがそれをclassの書き方で作る方法が分かりません。
アルゴリズムとしてはx1、x2に0か1を代入して設定した重み(w1,2)をかけることで結果として0か1の値を返すというアルゴリズムです。
試したこと
クラスでの作成方法のサイトを読んだのですが、エラーが出てうまくいきませんでした。
また、プログラミング初心者なためクラスの書き方を理解しきれているのか不安なため質問いたしました。
まずclassを使わないでANDを作成したところ以下のようなプログラムになりました。
python
1 2def AND(x1,x2): 3 w1,w2,theta=0.5,0.5,1 4 tmp = x1 * w1 + x2 * w2 5 if tmp <= theta: 6 return 0 7 elif tmp > theta: 8 return 1 9 10
次にclassの形で作成し、結果を出力しようとして次のようなプログラムを作成しました。
python
1 2class Parse: 3 4 def __init__(self,x1,x2): 5 self.x1=x1 6 self.x2=x2 7 8 def AND(x1,x2): 9 w1,w2,theta=0.5,0.5,1 10 tmp = x1 * w1 + x2 * w2 11 if tmp <= theta: 12 return 0 13 elif tmp > theta: 14 return 1 15 16 17 18a=Parse(0,0) 19 20a.AND(0,0) 21 22
この時以下のエラーが出ていました。
Traceback (most recent call last): File "C:\Users\shunya\Documents\python練習\pa-seputoron.py", line 20, in <module> a.AND(0,0) TypeError: AND() takes 2 positional arguments but 3 were given
#疑問点
1.classの作成のページを見たが__init_で初期化を行うというところの理解があまりできなかった(初期化するのはw1なのかx1なのか)
2.classの場合このコードの書き方で会っているのか
3.このエラーの対処法と正しい書き方を教えて頂きたいです。
追記
pythonのバージョンは3.9.6でIDLEというツールを使っています。
回答2件
あなたの回答
tips
プレビュー