forked from sobolevn/python-code-disasters
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathakinator.py
More file actions
96 lines (83 loc) · 3.02 KB
/
akinator.py
File metadata and controls
96 lines (83 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
class Akinator():
def __new__(cls):
if not hasattr(cls, 'instance'):
cls.instance = super(Akinator, cls).__new__(cls)
cls.instance.states = {}
return cls.instance
messages = [
"Начнем заново? :)",
"Вам подходит пляжный отдых?",
"Вы готовы к длительному перелёту?",
"Хотите преобщиться к местной культуре?",
"Хотите посетить страну с безвизовым режимом?",
"Хотите поднфться в горы?",
"Хотите попробовать итальянскую пиццу в оригинале?",
"Вы предпочтёте Европе Азию?",
"Вы знаете к какой кухне относятся роллы?",
"Вас привлекает запах круасанов по утрам?",
"Мексика",
"Доминиканская Республика",
"Турция",
"Болгария",
"Италия",
"Австрия",
"Япония",
"Китай",
"Франция",
"Англия"
]
@staticmethod
def state_is_country(state):
return state > 8
@staticmethod
def check_yes(s):
s = s.lower()
return s in ['yes', 'y', 'да', 'так точно', 'конечно', '+', '1', 'true']
@staticmethod
def check_no(s):
s = s.lower()
print(s)
return s in ['no', 'n', 'нет', 'ноу', '-', '0', 'false']
def query(self, id="", state=0, answer="+"):
if not id in self.states:
return 0
if (state == 0) and (answer == "+"):
return 1
elif (state == 1) and (answer == "+"):
return 2
elif (state == 1) and (answer == "-"):
return 5
elif (state == 2) and (answer == "+"):
return 3
elif (state == 2) and (answer == "-"):
return 4
elif (state == 3) and (answer == "+"):
return 10
elif (state == 3) and (answer == "-"):
return 11
elif (state == 4) and (answer == "+"):
return 12
elif (state == 4) and (answer == "-"):
return 13
elif (state == 5) and (answer == "+"):
return 6
elif (state == 5) and (answer == "-"):
return 7
elif (state == 6) and (answer == "+"):
return 14
elif (state == 6) and (answer == "-"):
return 15
elif (state == 7) and (answer == "+"):
return 8
elif (state == 7) and (answer == "-"):
return 9
elif (state == 8) and (answer == "+"):
return 16
elif (state == 8) and (answer == "-"):
return 17
elif (state == 9) and (answer == "+"):
return 18
elif (state == 9) and (answer == "-"):
return 19
else:
return 0