Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Analizator komunikatów
- # Demonstruje funkcję len() i operator in
- message = input("Wprowadź komunikat: ")
- print("\nDługość Twojego komunikatu wynosi:", len(message))
- print("\nNajczęściej używana litera w języku polskim, 'a',")
- if "a" in message:
- print("wystąpiła w Twoim komunikacie.")
- else:
- print("nie wystąpiła w Twoim komunikacie.")
- input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
- # Pobierz i zwróć
- # Demonstruje parametry i wartości zwrotne
- def display(message):
- print(message)
- def give_me_five():
- five = 5
- return five
- def ask_yes_no(question):
- """Zadaj pytanie, na które można odpowiedzieć tak lub nie."""
- response = None
- while response not in ("t", "n"):
- response = input(question).lower()
- return response
- # main
- display("To wiadomość dla Ciebie.\n")
- number = give_me_five()
- print("Oto co otrzymałem z funkcji give_me_five():", number)
- answer = ask_yes_no("\nProszę wprowadzić 't' lub 'n': ")
- print("Dziękuję za wprowadzenie:", answer)
- input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
- # Kółko i krzyżyk
- # Komputer gra w kółko i krzyżyk przeciwko człowiekowi
- # stałe globalne
- X = "X"
- O = "O"
- EMPTY = " "
- TIE = "TIE"
- NUM_SQUARES = 9
- def display_instruct():
- """Wyświetl instrukcję gry."""
- print(
- """
- Witaj w największym intelektualnym wyzwaniu wszech czasów, jakim jest
- gra 'Kółko i krzyżyk'. Będzie to ostateczna rozgrywka między Twoim
- ludzkim mózgiem a moim krzemowym procesorem.
- Swoje posunięcie wskażesz poprzez wprowadzenie liczby z zakresu 0 - 8.
- Liczba ta odpowiada pozycji na planszy zgodnie z poniższym schematem:
- 0 | 1 | 2
- ---------
- 3 | 4 | 5
- ---------
- 6 | 7 | 8
- Przygotuj się, Człowieku. Ostateczna batalia niebawem się rozpocznie. \n
- """
- )
- def ask_yes_no(question):
- """Zadaj pytanie, na które można odpowiedzieć tak lub nie."""
- response = None
- while response not in ("t", "n"):
- response = input(question).lower()
- return response
- def ask_number(question, low, high):
- """Poproś o podanie liczby z odpowiedniego zakresu."""
- response = None
- while response not in range(low, high):
- response = int(input(question))
- return response
- def pieces():
- """Ustal, czy pierwszy ruch należy do gracza, czy do komputera."""
- go_first = ask_yes_no("Czy chcesz mieć prawo do pierwszego ruchu? (t/n): ")
- if go_first == "t":
- print("\nWięc pierwszy ruch należy do Ciebie. Będzie Ci potrzebny.")
- human = X
- computer = O
- else:
- print("\nTwoja odwaga Cię zgubi... Ja wykonuję pierwszy ruch.")
- computer = X
- human = O
- return computer, human
- def new_board():
- """Utwórz nową planszę gry."""
- board = []
- for square in range(NUM_SQUARES):
- board.append(EMPTY)
- return board
- def display_board(board):
- """Wyświetl planszę gry na ekranie."""
- print("\n\t", board[0], "|", board[1], "|", board[2])
- print("\t", "---------")
- print("\t", board[3], "|", board[4], "|", board[5])
- print("\t", "---------")
- print("\t", board[6], "|", board[7], "|", board[8], "\n")
- def legal_moves(board):
- """Utwórz listę prawidłowych ruchów."""
- moves = []
- for square in range(NUM_SQUARES):
- if board[square] == EMPTY:
- moves.append(square)
- return moves
- def winner(board):
- """Ustal zwycięzcę gry."""
- WAYS_TO_WIN = ((0, 1, 2),
- (3, 4, 5),
- (6, 7, 8),
- (0, 3, 6),
- (1, 4, 7),
- (2, 5, 8),
- (0, 4, 8),
- (2, 4, 6))
- for row in WAYS_TO_WIN:
- if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
- winner = board[row[0]]
- return winner
- if EMPTY not in board:
- return TIE
- return None
- def human_move(board, human):
- """Odczytaj ruch człowieka."""
- legal = legal_moves(board)
- move = None
- while move not in legal:
- move = ask_number("Jaki będzie Twój ruch? (0 - 8):", 0, NUM_SQUARES)
- if move not in legal:
- print("\nTo pole jest już zajęte, niemądry Człowieku. Wybierz inne.\n")
- print("Znakomicie...")
- return move
- def computer_move(board, computer, human):
- """Spowoduj wykonanie ruchu przez komputer."""
- # utwórz kopię roboczą, ponieważ funkcja będzie zmieniać listę
- board = board[:]
- # najlepsze pozycje do zajęcia według kolejności
- BEST_MOVES = (4, 0, 2, 6, 8, 1, 3, 5, 7)
- print("Wybieram pole numer", end=" ")
- # jeśli komputer może wygrać, wykonaj ten ruch
- for move in legal_moves(board):
- board[move] = computer
- if winner(board) == computer:
- print(move)
- return move
- # ten ruch został sprawdzony, wycofaj go
- board[move] = EMPTY
- # jeśli człowiek może wygrać, zablokuj ten ruch
- for move in legal_moves(board):
- board[move] = human
- if winner(board) == human:
- print(move)
- return move
- # ten ruch został sprawdzony, wycofaj go
- board[move] = EMPTY
- # ponieważ nikt nie może wygrać w następnym ruchu, wybierz najlepsze wolne pole
- for move in BEST_MOVES:
- if move in legal_moves(board):
- print(move)
- return move
- def next_turn(turn):
- """Zmień wykonawcę ruchu."""
- if turn == X:
- return O
- else:
- return X
- def congrat_winner(the_winner, computer, human):
- """Pogratuluj zwycięzcy."""
- if the_winner != TIE:
- print(the_winner, "jest zwycięzcą!\n")
- else:
- print("Remis!\n")
- if the_winner == computer:
- print("Jak przewidywałem, Człowieku, jeszcze raz zostałem triumfatorem. \n" \
- "Dowód na to, że komputery przewyższają ludzi pod każdym względem.")
- elif the_winner == human:
- print("No nie! To niemożliwe! Jakoś udało Ci się mnie zwieść, Człowieku. \n" \
- "Ale to się nigdy nie powtórzy! Ja, komputer, przyrzekam Ci to!")
- elif the_winner == TIE:
- print("Miałeś mnóstwo szczęścia, Człowieku, i jakoś udało Ci się ze mną " \
- "zremisować. \nŚwiętuj ten dzień... bo to najlepszy wynik, jaki możesz " \
- "kiedykolwiek osiągnąć.")
- def main():
- display_instruct()
- computer, human = pieces()
- turn = X
- board = new_board()
- display_board(board)
- while not winner(board):
- if turn == human:
- move = human_move(board, human)
- board[move] = human
- else:
- move = computer_move(board, computer, human)
- board[move] = computer
- display_board(board)
- turn = next_turn(turn)
- the_winner = winner(board)
- congrat_winner(the_winner, computer, human)
- # rozpocznij program
- main()
- input("\n\nAby zakończyć grę, naciśnij klawisz Enter.")
- # Najlepsze wyniki 2.0
- # Demonstruje sekwencje zagnieżdżone
- scores = []
- choice = None
- while choice != "0":
- print(
- """
- Najlepsze wyniki 2.0
- 0 - zakończ
- 1 - wyświetl wyniki
- 2 - dodaj wynik
- """
- )
- choice = input("Wybierasz: ")
- print()
- # zakończ
- if choice == "0":
- print("Do widzenia.")
- # wyświetl tabelę najlepszych wyników
- elif choice == "1":
- print("Najlepsze wyniki\n")
- print("GRACZ\tWYNIK")
- for entry in scores:
- score, name = entry
- print(name, "\t", score)
- # add a score
- elif choice == "2":
- name = input("Podaj nazwę gracza: ")
- score = int(input("Jaki wynik gracz uzyskał?: "))
- entry = (score, name)
- scores.append(entry)
- scores.sort(reverse=True)
- scores = scores[:5] # zachowaj tylko 5 najlepszych wyników
- # nieznana opcja
- else:
- print("Niestety,", choice, "nie jest prawidłowym wyborem.")
- input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
- # Życzenia urodzinowe
- # Demonstruje argumenty nazwane i domyślne wartości parametrów
- # parametry pozycyjne
- def birthday1(name, age):
- print("Szczęśliwych urodzin,", name, "!", " Masz już", age, "lat.\n")
- # parametry z wartościami domyślnymi
- def birthday2(name = "Janusz", age = 5):
- print("Szczęśliwych urodzin,", name, "!", " Masz już", age, "lat.\n")
- birthday1("Janusz", 5)
- birthday1(5, "Janusz")
- birthday1(name = "Janusz", age = 5)
- birthday1(age = 5, name = "Janusz")
- birthday2()
- birthday2(name = "Katarzyna")
- birthday2(age = 12)
- birthday2(name = "Katarzyna", age = 12)
- birthday2("Katarzyna", 12)
- input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement