• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

"Akinator" w Pythonie

Object Storage Arubacloud
0 głosów
614 wizyt
pytanie zadane 20 października 2018 w Python przez Marcelyn Nowicjusz (140 p.)

Cześć,

Może kojarzycie czym jest akinator, a jeśli nie - jest to taka jakby gra w internecie, gdzie wybierasz jakąś znaną postać i odpowiadasz na zadawane pytania, tak aby akinator mógł zgadnąć o kogo ci chodzi. Spróbowałam zrobić coś podobnego w pythonie, tylko że z ludźmi z mojej klasy. Działa to w prosty sposób, fragment kodu:

print("Czy twoja postać jest dziewczyną?")
tak = str("tak")
answer = str(input())
if answer == tak:
  print("Czy twoja postać urodziła się w 2004?")  
  answer = str(input())
  if answer == tak:
    print("Czy twoja postać ma blond włosy?")
    answer = str(input())
    if answer == tak:
      print("Agata")
    else:
      print("Patrycja")

Wszystko działa jak chciałam, tylko mam jeden problem. Kiedy pokazałam mój program koleżance, zaczęła się śmiać z jego wyglądu. No cóż, rozumiem, że wiersz poleceń nie powala szatą graficzną :P Moje pytanie - co zrobić, żeby mój program wyglądał ciekawiej? Da się to zrobić w pythonie, czy muszę pisać w czymś innym? Wiem, że można zmienić kolor wiersza poleceń, ale chcę pokazać moją pracę na informatyce, a nie chcę nic zmieniać w szkolnych komputerach. Poza tym za bardzo by to nie pomogło. Dodam, że jestem całkowicie początkująca jeśli chodzi o programowanie, choć pewnie zdążyliście sami zauważyć :D

3 odpowiedzi

+2 głosów
odpowiedź 20 października 2018 przez marcingrychtol Obywatel (1,490 p.)
edycja 20 października 2018 przez marcingrychtol
Dopóki program jest poprawnie napisany, jego wygląd nie ma znaczenia. Oczywiście istotne jest, czy użyte funkcje są zasadne i czy czegoś nie można zrobić prościej.

 

Na podstawie fragmentu kodu wnioskuję jednak, że cała logika Twojego programu jest wątpliwa. Przede wszystkim Twój program jest nierozszerzalny w prosty sposób. Spróbuj napisać go od nowa inaczej.

Poniżej zakładam, że znasz tablice, ale możesz nie znać klas i obiektów. Jeśli nie znasz tablic, proponuję wymyślić coś innego, prostszego, co będzie miało sens ;)

1. Utwórz "profile" osób w klasie. Stwórz tablicę dwuwymiarową, w której każda komórka będzie przyjmować wartość bool dla konkretnego pytania. Zawartość tablicy stanowi niejako klucz. Każdy wers tablicy zawiera odpowiedzi dla pytań dla konkretnej osoby, tzn. tak lub nie, ale zapisujemy wartości bool, czyli 0 lub 1. Ilość komórek w wersie powinna być wystarczająca do tego, aby każda osoba miała niepowtarzalny klucz. Można też zapisać np. rok urodzenia w tablicy, nie widzę problemu.

2. Przeprowadź wszystkie pytania, wpisując do nowej tablicy jednowymiarowej odpowiedzi użytkownika, odpowiednio wartości bool.

3. Wykonaj w pętli porównanie wartości tablic. Po wykonaniu poprawnego porównania, tzn kiedy odpowiedzi użytkownika zgodzą się z którymś wersem, niech pętla zwróci indeks wersu, w którym wykryto zgodność, np. za pomocą na bieżąco inkrementowanego iteratora.

4. Funkcją switch, której podasz wartość iteratora, zwróć na ekran Imię osoby. Alternatywnie możesz mieć osobną tablicę z imionami, która po prostu zwróci imię znajdujące się pod podanym indeksem. Czyli jeśli pętla sprawdziła, że w wersie o indeksie 4 zgadzają się wszystkie wartości, to program wypisze na ekranie imię osoby z indeksu 4 z tablicy z imionami, czyli np. Donald, albo inny Denis.
1
komentarz 20 października 2018 przez Marcelyn Nowicjusz (140 p.)
edycja 20 października 2018 przez Marcelyn
Dziękuję za odpowiedź, postaram się coś zmienić zgodnie z twoimi wskazówkami. Zadałam pytanie o wygląd programu, bo gdy pokażę go w szkole grupie piętnastolatków, będą oni zwracać uwagę bardziej na stronę wizualną niż na to, jak on właściwie działa. Jedyna osoba, którą mogłoby to zainteresować to nasz nauczyciel od informatyki, ale szczerze w to wątpię, bo nie wiem czy on w ogóle ma jakieś pojęcie o programowaniu. Nasze lekcje informatyki to głównie office / geografia (nauczyciel uczy też geografii i głównie na tym przedmiocie się skupia) albo lekcje typu "piszemy całą godzinę w wordzie, osoba która napisze powyżej 5000 znaków dostanie 5" :D Niemniej jednak rozumiem, że powinnam starać się ulepszać swoje programy a nie pisać byle co, bo "i tak nikt w szkole się na tym nie zna".
0 głosów
odpowiedź 20 października 2018 przez izonik Stary wyjadacz (12,560 p.)

Zrób jak radzi marcingrychtol, a później zainteresuj się PyQt5 lub kivy (w nich możesz stworzyć GUI)

0 głosów
odpowiedź 20 października 2018 przez Hunter94 Mądrala (6,290 p.)
Możesz się zainteresować microframeworkiem webowym Flask.
będziesz mógł wtedy komunikować się z swoim programem przez przeglądarkę.
http://flask.pocoo.org

Podobne pytania

+1 głos
1 odpowiedź 117 wizyt
+1 głos
2 odpowiedzi 81 wizyt
pytanie zadane 12 kwietnia w Python przez wojtas29321932942 Nowicjusz (240 p.)
+1 głos
2 odpowiedzi 86 wizyt
pytanie zadane 10 kwietnia w Python przez wojtas29321932942 Nowicjusz (240 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...