Advertisement
mbwlodarczyk

len, in, pariwartzwrotn, kółkikrzy, sekwzagn, parametr/arg

Jun 18th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.06 KB | None | 0 0
  1. # Analizator komunikatów
  2. # Demonstruje funkcję len() i operator in
  3.  
  4. message = input("Wprowadź komunikat: ")
  5.  
  6. print("\nDługość Twojego komunikatu wynosi:", len(message))
  7.  
  8. print("\nNajczęściej używana litera w języku polskim, 'a',")
  9. if "a" in message:
  10. print("wystąpiła w Twoim komunikacie.")
  11. else:
  12. print("nie wystąpiła w Twoim komunikacie.")
  13.  
  14. input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
  15.  
  16.  
  17.  
  18.  
  19. # Pobierz i zwróć
  20. # Demonstruje parametry i wartości zwrotne
  21.  
  22. def display(message):
  23. print(message)
  24.  
  25. def give_me_five():
  26. five = 5
  27. return five
  28.  
  29. def ask_yes_no(question):
  30. """Zadaj pytanie, na które można odpowiedzieć tak lub nie."""
  31. response = None
  32. while response not in ("t", "n"):
  33. response = input(question).lower()
  34. return response
  35.  
  36. # main
  37. display("To wiadomość dla Ciebie.\n")
  38.  
  39. number = give_me_five()
  40. print("Oto co otrzymałem z funkcji give_me_five():", number)
  41.  
  42. answer = ask_yes_no("\nProszę wprowadzić 't' lub 'n': ")
  43. print("Dziękuję za wprowadzenie:", answer)
  44.  
  45. input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
  46.  
  47.  
  48.  
  49.  
  50.  
  51. # Kółko i krzyżyk
  52. # Komputer gra w kółko i krzyżyk przeciwko człowiekowi
  53.  
  54. # stałe globalne
  55. X = "X"
  56. O = "O"
  57. EMPTY = " "
  58. TIE = "TIE"
  59. NUM_SQUARES = 9
  60.  
  61.  
  62. def display_instruct():
  63. """Wyświetl instrukcję gry."""
  64. print(
  65. """
  66. Witaj w największym intelektualnym wyzwaniu wszech czasów, jakim jest
  67. gra 'Kółko i krzyżyk'. Będzie to ostateczna rozgrywka między Twoim
  68. ludzkim mózgiem a moim krzemowym procesorem.
  69.  
  70. Swoje posunięcie wskażesz poprzez wprowadzenie liczby z zakresu 0 - 8.
  71. Liczba ta odpowiada pozycji na planszy zgodnie z poniższym schematem:
  72.  
  73. 0 | 1 | 2
  74. ---------
  75. 3 | 4 | 5
  76. ---------
  77. 6 | 7 | 8
  78.  
  79. Przygotuj się, Człowieku. Ostateczna batalia niebawem się rozpocznie. \n
  80. """
  81. )
  82.  
  83.  
  84. def ask_yes_no(question):
  85. """Zadaj pytanie, na które można odpowiedzieć tak lub nie."""
  86. response = None
  87. while response not in ("t", "n"):
  88. response = input(question).lower()
  89. return response
  90.  
  91.  
  92. def ask_number(question, low, high):
  93. """Poproś o podanie liczby z odpowiedniego zakresu."""
  94. response = None
  95. while response not in range(low, high):
  96. response = int(input(question))
  97. return response
  98.  
  99.  
  100. def pieces():
  101. """Ustal, czy pierwszy ruch należy do gracza, czy do komputera."""
  102. go_first = ask_yes_no("Czy chcesz mieć prawo do pierwszego ruchu? (t/n): ")
  103. if go_first == "t":
  104. print("\nWięc pierwszy ruch należy do Ciebie. Będzie Ci potrzebny.")
  105. human = X
  106. computer = O
  107. else:
  108. print("\nTwoja odwaga Cię zgubi... Ja wykonuję pierwszy ruch.")
  109. computer = X
  110. human = O
  111. return computer, human
  112.  
  113.  
  114. def new_board():
  115. """Utwórz nową planszę gry."""
  116. board = []
  117. for square in range(NUM_SQUARES):
  118. board.append(EMPTY)
  119. return board
  120.  
  121.  
  122. def display_board(board):
  123. """Wyświetl planszę gry na ekranie."""
  124. print("\n\t", board[0], "|", board[1], "|", board[2])
  125. print("\t", "---------")
  126. print("\t", board[3], "|", board[4], "|", board[5])
  127. print("\t", "---------")
  128. print("\t", board[6], "|", board[7], "|", board[8], "\n")
  129.  
  130.  
  131. def legal_moves(board):
  132. """Utwórz listę prawidłowych ruchów."""
  133. moves = []
  134. for square in range(NUM_SQUARES):
  135. if board[square] == EMPTY:
  136. moves.append(square)
  137. return moves
  138.  
  139.  
  140. def winner(board):
  141. """Ustal zwycięzcę gry."""
  142. WAYS_TO_WIN = ((0, 1, 2),
  143. (3, 4, 5),
  144. (6, 7, 8),
  145. (0, 3, 6),
  146. (1, 4, 7),
  147. (2, 5, 8),
  148. (0, 4, 8),
  149. (2, 4, 6))
  150.  
  151. for row in WAYS_TO_WIN:
  152. if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
  153. winner = board[row[0]]
  154. return winner
  155.  
  156. if EMPTY not in board:
  157. return TIE
  158.  
  159. return None
  160.  
  161.  
  162. def human_move(board, human):
  163. """Odczytaj ruch człowieka."""
  164. legal = legal_moves(board)
  165. move = None
  166. while move not in legal:
  167. move = ask_number("Jaki będzie Twój ruch? (0 - 8):", 0, NUM_SQUARES)
  168. if move not in legal:
  169. print("\nTo pole jest już zajęte, niemądry Człowieku. Wybierz inne.\n")
  170. print("Znakomicie...")
  171. return move
  172.  
  173.  
  174. def computer_move(board, computer, human):
  175. """Spowoduj wykonanie ruchu przez komputer."""
  176. # utwórz kopię roboczą, ponieważ funkcja będzie zmieniać listę
  177. board = board[:]
  178. # najlepsze pozycje do zajęcia według kolejności
  179. BEST_MOVES = (4, 0, 2, 6, 8, 1, 3, 5, 7)
  180.  
  181. print("Wybieram pole numer", end=" ")
  182.  
  183. # jeśli komputer może wygrać, wykonaj ten ruch
  184. for move in legal_moves(board):
  185. board[move] = computer
  186. if winner(board) == computer:
  187. print(move)
  188. return move
  189. # ten ruch został sprawdzony, wycofaj go
  190. board[move] = EMPTY
  191.  
  192. # jeśli człowiek może wygrać, zablokuj ten ruch
  193. for move in legal_moves(board):
  194. board[move] = human
  195. if winner(board) == human:
  196. print(move)
  197. return move
  198. # ten ruch został sprawdzony, wycofaj go
  199. board[move] = EMPTY
  200.  
  201. # ponieważ nikt nie może wygrać w następnym ruchu, wybierz najlepsze wolne pole
  202. for move in BEST_MOVES:
  203. if move in legal_moves(board):
  204. print(move)
  205. return move
  206.  
  207.  
  208. def next_turn(turn):
  209. """Zmień wykonawcę ruchu."""
  210. if turn == X:
  211. return O
  212. else:
  213. return X
  214.  
  215.  
  216. def congrat_winner(the_winner, computer, human):
  217. """Pogratuluj zwycięzcy."""
  218. if the_winner != TIE:
  219. print(the_winner, "jest zwycięzcą!\n")
  220. else:
  221. print("Remis!\n")
  222.  
  223. if the_winner == computer:
  224. print("Jak przewidywałem, Człowieku, jeszcze raz zostałem triumfatorem. \n" \
  225. "Dowód na to, że komputery przewyższają ludzi pod każdym względem.")
  226.  
  227. elif the_winner == human:
  228. print("No nie! To niemożliwe! Jakoś udało Ci się mnie zwieść, Człowieku. \n" \
  229. "Ale to się nigdy nie powtórzy! Ja, komputer, przyrzekam Ci to!")
  230.  
  231. elif the_winner == TIE:
  232. print("Miałeś mnóstwo szczęścia, Człowieku, i jakoś udało Ci się ze mną " \
  233. "zremisować. \nŚwiętuj ten dzień... bo to najlepszy wynik, jaki możesz " \
  234. "kiedykolwiek osiągnąć.")
  235.  
  236.  
  237. def main():
  238. display_instruct()
  239. computer, human = pieces()
  240. turn = X
  241. board = new_board()
  242. display_board(board)
  243.  
  244. while not winner(board):
  245. if turn == human:
  246. move = human_move(board, human)
  247. board[move] = human
  248. else:
  249. move = computer_move(board, computer, human)
  250. board[move] = computer
  251. display_board(board)
  252. turn = next_turn(turn)
  253.  
  254. the_winner = winner(board)
  255. congrat_winner(the_winner, computer, human)
  256.  
  257.  
  258. # rozpocznij program
  259. main()
  260. input("\n\nAby zakończyć grę, naciśnij klawisz Enter.")
  261.  
  262.  
  263.  
  264.  
  265. # Najlepsze wyniki 2.0
  266. # Demonstruje sekwencje zagnieżdżone
  267.  
  268. scores = []
  269.  
  270. choice = None
  271. while choice != "0":
  272.  
  273. print(
  274. """
  275. Najlepsze wyniki 2.0
  276.  
  277. 0 - zakończ
  278. 1 - wyświetl wyniki
  279. 2 - dodaj wynik
  280. """
  281. )
  282.  
  283. choice = input("Wybierasz: ")
  284. print()
  285.  
  286. # zakończ
  287. if choice == "0":
  288. print("Do widzenia.")
  289.  
  290. # wyświetl tabelę najlepszych wyników
  291. elif choice == "1":
  292. print("Najlepsze wyniki\n")
  293. print("GRACZ\tWYNIK")
  294. for entry in scores:
  295. score, name = entry
  296. print(name, "\t", score)
  297.  
  298. # add a score
  299. elif choice == "2":
  300. name = input("Podaj nazwę gracza: ")
  301. score = int(input("Jaki wynik gracz uzyskał?: "))
  302. entry = (score, name)
  303. scores.append(entry)
  304. scores.sort(reverse=True)
  305. scores = scores[:5] # zachowaj tylko 5 najlepszych wyników
  306.  
  307. # nieznana opcja
  308. else:
  309. print("Niestety,", choice, "nie jest prawidłowym wyborem.")
  310.  
  311. input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
  312.  
  313.  
  314.  
  315.  
  316.  
  317. # Życzenia urodzinowe
  318. # Demonstruje argumenty nazwane i domyślne wartości parametrów
  319.  
  320. # parametry pozycyjne
  321. def birthday1(name, age):
  322. print("Szczęśliwych urodzin,", name, "!", " Masz już", age, "lat.\n")
  323.  
  324. # parametry z wartościami domyślnymi
  325. def birthday2(name = "Janusz", age = 5):
  326. print("Szczęśliwych urodzin,", name, "!", " Masz już", age, "lat.\n")
  327.  
  328.  
  329. birthday1("Janusz", 5)
  330. birthday1(5, "Janusz")
  331. birthday1(name = "Janusz", age = 5)
  332. birthday1(age = 5, name = "Janusz")
  333.  
  334. birthday2()
  335. birthday2(name = "Katarzyna")
  336. birthday2(age = 12)
  337. birthday2(name = "Katarzyna", age = 12)
  338. birthday2("Katarzyna", 12)
  339.  
  340. input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement