Merge pull request 'Initial implementation' (#1) from chatbot_initial_implementation into chatbot
Reviewed-on: #1
This commit is contained in:
commit
3d77213757
68
elisa_pl.py
68
elisa_pl.py
@ -1 +1,67 @@
|
|||||||
print("Hello, World!")
|
from ast import arg
|
||||||
|
from dataclasses import replace
|
||||||
|
import re
|
||||||
|
import random
|
||||||
|
|
||||||
|
ARG_LITERAL = '%'
|
||||||
|
MAX_ARGS = 5
|
||||||
|
GOODBYES =["Do zobaczenia", "Elo"]
|
||||||
|
QUIT = "wyjscie"
|
||||||
|
|
||||||
|
pairs = ( ('test (.*)', ('%1',)), ('(.*) test2 (.*)', ('%1 2 %2',)), ('test2 (.*)', ('%1 2',)) )
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
is_running = True
|
||||||
|
while is_running:
|
||||||
|
user_input = input().lower()
|
||||||
|
|
||||||
|
if should_quit(user_input):
|
||||||
|
is_running = False
|
||||||
|
continue
|
||||||
|
|
||||||
|
for pair in pairs:
|
||||||
|
search = re.search(pair[0].lower(), user_input)
|
||||||
|
|
||||||
|
if not search:
|
||||||
|
continue
|
||||||
|
|
||||||
|
ans = pick_answer(pair)
|
||||||
|
print(replace_args(ans, search))
|
||||||
|
break;
|
||||||
|
|
||||||
|
print(random.choice(GOODBYES))
|
||||||
|
|
||||||
|
|
||||||
|
def should_quit(input):
|
||||||
|
return QUIT in input
|
||||||
|
|
||||||
|
|
||||||
|
def get_full_arg_str(arg_number):
|
||||||
|
return ARG_LITERAL + str(arg_number)
|
||||||
|
|
||||||
|
|
||||||
|
def replace_args(pattern, match):
|
||||||
|
arg_number = 1
|
||||||
|
result = pattern
|
||||||
|
while arg_number <= MAX_ARGS:
|
||||||
|
if get_full_arg_str(arg_number) in result:
|
||||||
|
result = substitute_arg(result, match.group(arg_number), arg_number)
|
||||||
|
arg_number += 1
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def substitute_arg(pattern, sub, group_number):
|
||||||
|
arg = get_full_arg_str(group_number)
|
||||||
|
return pattern.replace(arg, sub)
|
||||||
|
|
||||||
|
|
||||||
|
def pick_answer(pair):
|
||||||
|
assert len(pair) == 2
|
||||||
|
idx = random.randint(0, len(pair[1]) - 1)
|
||||||
|
return pair[1][idx]
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user