updated on 2019-08-18
# coding: utf-8
import numpy as np
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
# { |w * x|インデックスごとで掛け算 [0.5, 0.5] * [x1, x2] => [0.5 * x1, 0.5 * x2] }
# { |np.sum(w*x)| w*xの各要素を全てたす (0.5 * x1) + (0.5 * x2) }
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
if __name__ == '__main__':
for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = AND(xs[0], xs[1])
print(str(xs) + " -> " + str(y))
実行結果
(0, 0) -> 0
(1, 0) -> 0
(0, 1) -> 0
(1, 1) -> 1
* if __name__ == '__main__' について
Pythonファイルのモジュール名が文字列で入っている __name__
という特殊な変数があります。
$ python hello.py
のようにスクリプトからファイルを実行すると__name__ 変数は自動で "__main__"
という文字列になるimport hello
した:hello.py
内部で __name__
は "hello"
という文字列になるつまり...インポートしてもファイルが勝手に実行されない!!
(例)
hello.py
def main(): print("Hello") main()
$ python hello.py Hello
外部から import hello
という風に hello.py をインポートした際にも 「Hello」と表示されてしまいます
>>> import hello # この時点で「Hello」が表示されてしまう Hello >>>
if __name__ == "__main__": を加えると
hello.py
def main(): print("Hello") if __name__ == "__main__": main()
このif文の内部は import された際には実行されません。
>>> import hello >>>
以上!!