teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

7

出典追加

2020/04/23 21:16

投稿

退会済みユーザー
answer CHANGED
@@ -40,6 +40,7 @@
40
40
 
41
41
 
42
42
  ```Python3
43
+ # 出典 http://code.activestate.com/recipes/384122-infix-operators/
43
44
  class Infix:
44
45
  def __init__(self, function):
45
46
  self.function = function

6

コード修正

2020/04/23 21:16

投稿

退会済みユーザー
answer CHANGED
@@ -8,7 +8,7 @@
8
8
  "+": operator.add,
9
9
  "-": operator.sub,
10
10
  "*": operator.mul,
11
- "/": operator.itruediv
11
+ "/": operator.floordiv
12
12
  }
13
13
  stack = []
14
14
  it = iter(args)

5

演算子追加

2020/04/23 08:14

投稿

退会済みユーザー
answer CHANGED
@@ -55,12 +55,18 @@
55
55
  return self.function(value1, value2)
56
56
 
57
57
  たす = Infix(lambda x,y: x+y)
58
+ ひく = Infix(lambda x,y: x-y)
59
+ かける = Infix(lambda x,y: x*y)
60
+ わる = Infix(lambda x,y: x//y)
58
61
 
59
62
  a = 3
60
63
  c = 1
61
64
  print(a|たす|c)
62
65
 
63
66
  # 4
67
+
68
+ print(a|たす|c|かける|2)
69
+ # 8
64
70
  ```
65
71
 
66
72
  以上ご参考まで。

4

誤字修正

2020/04/23 08:05

投稿

退会済みユーザー
answer CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  ところで、Pythonではクラスを定義すれば演算子をオーバーライドすることができます。この機能を使って論理OR演算子の|をオーバーライドして、中置記法の演算子っぽいものを作った人がいます。
38
38
 
39
- 例えば"||"と言う足算をする演算子っぽいものを定義してみます。
39
+ 例えば"|たす|"と言う足算をする演算子っぽいものを定義してみます。
40
40
 
41
41
 
42
42
  ```Python3
@@ -54,11 +54,11 @@
54
54
  def __call__(self, value1, value2):
55
55
  return self.function(value1, value2)
56
56
 
57
- = Infix(lambda x,y: x+y)
57
+ たす = Infix(lambda x,y: x+y)
58
58
 
59
59
  a = 3
60
60
  c = 1
61
- print(a||c)
61
+ print(a|たす|c)
62
62
 
63
63
  # 4
64
64
  ```

3

誤字修正

2020/04/23 07:59

投稿

退会済みユーザー
answer CHANGED
@@ -34,7 +34,7 @@
34
34
  # 4
35
35
  ```
36
36
 
37
- ところで、Pythonではクラスを定義すれば演算子をオーバーライドすることができます。この機能を使って論理OR演算子の|をオーバーライドして、中置記法の演算子っぽいものを作るをった人がいます。
37
+ ところで、Pythonではクラスを定義すれば演算子をオーバーライドすることができます。この機能を使って論理OR演算子の|をオーバーライドして、中置記法の演算子っぽいものを作った人がいます。
38
38
 
39
39
  例えば"|と|"と言う足算をする演算子っぽいものを定義してみます。
40
40
 

2

誤字修正

2020/04/23 07:54

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- +は演算子で型はありません。またPythonでは演算子を新たに定義することもできません。一番見た目が近くなりそうなの+を文字列にすればこんな風に書けます。
1
+ +は演算子で型はありません。またPythonでは演算子を新たに定義することもできません。一番見た目が近くなりそうなのは、+を文字列にすればこんな風に書けます。
2
2
 
3
3
  ```Python3
4
4
  import operator

1

誤字修正

2020/04/23 07:48

投稿

退会済みユーザー
answer CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  ところで、Pythonではクラスを定義すれば演算子をオーバーライドすることができます。この機能を使って論理OR演算子の|をオーバーライドして、中置記法の演算子っぽいものを作るをった人がいます。
38
38
 
39
- 例えば"|と|"と言う足算をする演算子っぽいもを定義してみます。
39
+ 例えば"|と|"と言う足算をする演算子っぽいもを定義してみます。
40
40
 
41
41
 
42
42
  ```Python3