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.
- Operator slice
- Funkcje split i join
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
- dodawanie 2 liczb
- odejmowanie 2 liczb
- mnożenie 2 liczb
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.
- Metody w pliku
utils.py
:verify_operation(op_string)
, weryfikuje czy string operacji podany przez użytkownika jest poprawny.extract_operation(op_string)
, parsuje string operacji i zwraca symbol operacji, czyli*
,+
lub-
.extract_operands(op_string)
, parsuje string operacji i zwraca listę wartości, np."1 * 2"
->[1, 2]
.
- Wykorzystaj metodę
split
do sparsowania inputu użytkownika. - Do konwersji stringa na liczbę wykorzystaj metodę
int
.
Zaimplementuj kółko i krzyżyk.
Napisz proste AI. Algorytm do kółka i krzyżyk jest bardzo prosty:
- Jeżeli możesz to wygraj.
- Jeżeli twój przeciwnik ma opcje wygrać w nastęnych ruchu, zablokuj go.
- Jeżeli zaczynasz zajmij środek planszy.
- Jeżeli możesz zajmij róg planszy.
- Zajmij bok planszy.
Narysuj planszę w konsoli w formacie:
X|O|O
-----
O|X|O
-----
O|O|X
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.
- Wykorzystaj klasę do implementacji planszy, klasa powinna zawierać metody
get(x, y)
orazset(x, y, symbol)
. Wewnątrz klasy wykorzystaj 2-wymiarową tablicę. - Wykorzystaj metodę
split
do parsowania inputu użytkownika. - Nie pisz wszędzie w programie
"X"
lub"O"
gdy chcesz gdzieś wpisać wartość symbolu któregoś z graczy, stwórz globalne zmiennePLAYER_SYMBOL
,COMPUTER_SYMBOL
.
Pozwól użytkownikowi na wybór symbolu którym gra X/O