cython
1# mode: run
2# tag: if, and, or
3
4def if_x(x):
5"""
6>>> if_x(0)
72
8>>> if_x(1)
91
10"""
11if x:
12return 1
13else:
14return 2
15
16def if_not(x):
17"""
18>>> if_not(0)
191
20>>> if_not(1)
212
22"""
23if not x:
24return 1
25else:
26return 2
27
28
29def if_and(a, b):
30"""
31>>> if_and(3, 0)
322
33>>> if_and(0, 3)
342
35>>> if_and(0, 0)
362
37>>> if_and(3, 3)
381
39"""
40if a and b:
41return 1
42else:
43return 2
44
45
46def if_not_and(a, b):
47"""
48>>> if_not_and(3, 0)
491
50>>> if_not_and(0, 3)
511
52>>> if_not_and(0, 0)
531
54>>> if_not_and(3, 3)
552
56"""
57if not (a and b):
58return 1
59else:
60return 2
61
62
63def if_or(a, b):
64"""
65>>> if_or(3, 0)
661
67>>> if_or(0, 3)
681
69>>> if_or(0, 0)
702
71>>> if_or(3, 3)
721
73"""
74if a or b:
75return 1
76else:
77return 2
78
79
80def if_not_or(a, b):
81"""
82>>> if_not_or(3, 0)
832
84>>> if_not_or(0, 3)
852
86>>> if_not_or(0, 0)
871
88>>> if_not_or(3, 3)
892
90"""
91if not (a or b):
92return 1
93else:
94return 2
95
96
97def if_and_or(a, b, c, d):
98"""
99>>> if_and_or(3, 0, 0, 3)
1001
101>>> if_and_or(0, 3, 0, 3)
1021
103>>> if_and_or(0, 3, 3, 0)
1041
105>>> if_and_or(0, 3, 3, 0)
1061
107>>> if_and_or(0, 0, 0, 0)
1082
109>>> if_and_or(0, 3, 0, 0)
1102
111>>> if_and_or(0, 0, 3, 0)
1122
113>>> if_and_or(0, 0, 0, 3)
1142
115"""
116if (a or b) and (c or d):
117return 1
118else:
119return 2
120