2022-03-14 22:14:08 +01:00
from ast import arg
from dataclasses import replace
2022-03-13 22:04:59 +01:00
import re
import random
ARG_LITERAL = ' % '
2022-03-14 22:14:08 +01:00
MAX_ARGS = 5
2022-03-15 23:07:59 +01:00
GOODBYES = [ " Do zobaczenia " , " Elo " ]
2022-03-13 22:04:59 +01:00
QUIT = " wyjscie "
2022-03-15 23:07:59 +01:00
pairs = (
( ' test (.*) ' , ( ' % 1 ' , ) ) ,
( ' (.*) test2 (.*) ' , ( ' % 1 2 % 2 ' , ) ) ,
( ' test2 (.*) ' , ( ' % 1 2 ' , ) ) ,
( ' dobrze|świetnie|swietnie|super ' , ( ' To świetnie! Opowiedz mi dlaczego ' , ' To bardzo dobrze! Z jakiego powodu? ' ) ) ,
( ' źle|zle|do bani|słabo|slabo ' , ( ' Przykro mi. Czhesz o tym porozmawiać? ' , ' To bardzo dobrze! Z jakiego powodu? ' ) ) ,
( ' tak|nie ' , ( ' ok ' , ' :) ' , ' mhm ' , ' okej ' ) ) ,
( ' lubi[eę] (.*) ' , ( ' Ja też! :D Co Ci się w tym najbardziej podoba? ' , ' Powiedz mi więcej o % 1 ' ) ) ,
2022-03-15 23:11:26 +01:00
( ' marz[eę] o (.*) ' , ( ' Nie przejmuj się, kiedyś się uda! ' , ' Hmm... A dlaczego akurat o % 1? ' ) ) ,
2022-03-15 23:07:59 +01:00
( ' powiedz (.*) ' , ( ' % 1 ' , ' % 1, nie jestem botem :/ ' ) ) ,
2022-03-16 11:50:46 +01:00
( ' Jak się masz ' , ( ' Dobrze, dziękuję ' , ' Dobrze, a jak u Ciebie? ' , ' Wszysto w porządku ' , ' Mogło by być lepiej ' , ' Źle ' , ' Bywało lepiej, a jak u Ciebie? ' ) ) ,
( ' Co u Ciebie ' , ( ' Dobrze, dziękuję ' , ' Dobrze, a jak u Ciebie? ' , ' Wszysto w porządku ' , ' Mogło by być lepiej ' , ' Źle ' , ' Bywało lepiej, a jak u Ciebie? ' ) ) ,
( ' studia(.*) ' , ( ' Jak sesja ' , ' Co studiujesz? ' , ' Podoba Ci się? ' , ' UAM ' ) ) ,
2022-03-16 10:33:33 +01:00
( ' smut[ek|no] (.*) ' , ( ' Będzie dobrze ' , ' Pogadajmy ' , ' Jak mogę pomóc ' ) ) ,
( ' Czy jesteś botem? ' , ( ' Nie ' , ' Tak, przeszkadza to Tobie? ' , ' Może się tak wydawać, bo długo pracuję ' , ' Tak, istnieję w przestrzeni komputera ' ) ) ,
2022-03-16 11:50:46 +01:00
( ' UAM(.*) ' , ( ' UAM to świetna uczelnia ' , ' Wydział Matematyki i Informatyki jest najlepszy ' , ' Na WMI jest najlepszy dziekan ' , ' Słyszałem, że to najlepsza uczelnia w Poznaniu ' ) ) ,
( ' pies|kot(.*) ' , ( ' Kocham psy i koty ' , ' Uwielbiam zwierzęta ' , ' Mój pies nazywa się Max ' , ' Mój kot nazywa się Kica ' , ' Masz jakiegoś zwierzaka? ' ) ) ,
( ' sport(.*) ' , ( ' Sport to zdrowie ' , ' Uprawiasz jakiś sport? ' , ' Jaką dziedzinę sportu najbardziej lubisz? ' ) ) ,
( ' (.*)Poznań(.*) ' , ( ' Symbolem Poznania są koziołki ' , ' Rogale marcińskie ' ) ) ,
2022-03-15 23:07:59 +01:00
( ' (.*) ' , ( ' Hmm... Interesujące... Opowiedz mi więcej o % 1 ' , ' Powiedz mi więcej o % 1 ' ) ) , # '(.*)' to jest odpowiedź na "wszystko", musi być na końcu listy!
)
2022-03-13 22:04:59 +01:00
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 )
2022-03-14 22:14:08 +01:00
print ( replace_args ( ans , search ) )
break ;
2022-03-13 22:04:59 +01:00
print ( random . choice ( GOODBYES ) )
def should_quit ( input ) :
return QUIT in input
2022-03-14 22:14:08 +01:00
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 )
2022-03-13 22:04:59 +01:00
def pick_answer ( pair ) :
assert len ( pair ) == 2
idx = random . randint ( 0 , len ( pair [ 1 ] ) - 1 )
return pair [ 1 ] [ idx ]
if __name__ == " __main__ " :
2022-03-15 23:07:59 +01:00
print ( " Hej jestem Elize! Jak się czujesz? " )
main ( )