Skip to content

Instantly share code, notes, and snippets.

@Dzejkop
Last active January 12, 2018 07:24
Show Gist options
  • Save Dzejkop/0d26dc34d14887895cf4e5949cf3acc1 to your computer and use it in GitHub Desktop.
Save Dzejkop/0d26dc34d14887895cf4e5949cf3acc1 to your computer and use it in GitHub Desktop.
Felep-workwork

Workwork

Ogarnij string formatting i operacje na stringach

String formatting

https://pyformat.info/

Tu masz stronę która to fajnie wyjaśnia, zaprezentowane są 2 style old i new. Obu stylów się wciąż używa, wybierz sobie który chcesz - jak już zrozumiesz idee to opanowanie drugiego stylu nie będzie problematyczne.

https://www.learnpython.org/en/String_Formatting Tu masz interaktywny tutorial do "starego" stylu.

Operacje na stringach

  1. Operator slice
  2. Funkcje split i join

Exercise 1: Calculator

W tym zadaniu wykorzystasz operacje na stringach oraz nauczysz się jak rozbić implementację swoich programów na wiele plików.

https://docs.python.org/2/tutorial/modules.html

Python każdy plik traktuje jako moduł.

W ramach tego zadania stwórz prosty kalkulator, rozbij jego implementacja na 2 pliki.

  • main.py - w którym implementujesz komunikacje z użytkownikiem
  • utils.py - w którym implementujesz parsowanie inputu użytkownika

Wspierane operacje:

  1. dodawanie 2 liczb
  2. odejmowanie 2 liczb
  3. mnożenie 2 liczb

Input użytkownika

Pozwól użytkownikowi na wpisanie całości operacji w konsoli, np. 12 * 3.

Zabezpiecz się przed błędami, jeżeli użytkownik wpisze niepoprawny ciąg znaków, np. a * b, a*a, 31 -b 1, dupa, etc. to wyświetl komunikat o błędzie i czekaj na dalszy input.

Wyniki wyświetlaj w formacie: X * Y = Z, X + Y = Z, etc.

Tips

  1. Metody w pliku utils.py:
    1. verify_operation(op_string), weryfikuje czy string operacji podany przez użytkownika jest poprawny.
    2. extract_operation(op_string), parsuje string operacji i zwraca symbol operacji, czyli *, + lub -.
    3. extract_operands(op_string), parsuje string operacji i zwraca listę wartości, np. "1 * 2" -> [1, 2].
  2. Wykorzystaj metodę split do sparsowania inputu użytkownika.
  3. Do konwersji stringa na liczbę wykorzystaj metodę int.

Exercise 2: Tic Tac Toe

Zaimplementuj kółko i krzyżyk.

Napisz proste AI. Algorytm do kółka i krzyżyk jest bardzo prosty:

  1. Jeżeli możesz to wygraj.
  2. Jeżeli twój przeciwnik ma opcje wygrać w nastęnych ruchu, zablokuj go.
  3. Jeżeli zaczynasz zajmij środek planszy.
  4. Jeżeli możesz zajmij róg planszy.
  5. Zajmij bok planszy.

Narysuj planszę w konsoli w formacie:

X|O|O
-----
O|X|O
-----
O|O|X

Input użytkownika

Wykorzystaj prosty system koordynatów:

  0 1 2
0 X|O|O
  -----
1 O|X|O
  -----
2 O|O|X

Gdy użytkownik podaje pole, w którym chce postawić swój znaczek to podaje 2 liczby X i Y, np. 1 1 czyli sam środek planszy.

Nie pozwól użytkownikowi na postawienie znaczka w już zajętym polu.

Tips:

  1. Wykorzystaj klasę do implementacji planszy, klasa powinna zawierać metody get(x, y) oraz set(x, y, symbol). Wewnątrz klasy wykorzystaj 2-wymiarową tablicę.
  2. Wykorzystaj metodę split do parsowania inputu użytkownika.
  3. Nie pisz wszędzie w programie "X" lub "O" gdy chcesz gdzieś wpisać wartość symbolu któregoś z graczy, stwórz globalne zmienne PLAYER_SYMBOL, COMPUTER_SYMBOL.

Bonus Point:

Pozwól użytkownikowi na wybór symbolu którym gra X/O

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment