190419-TIL

2019년에 Hexo 블로그에 쓴 글을 옮겨 왔습니다. 당시 이해를 그대로 두었습니다.

Today I Learned

오늘 한 일

새로운 언어를 배우는 방법

  1. 자료형
  2. 연산자
  3. 제어문, 반복문
  4. 함수
    • call by reference, call by value, call by object reference
    • First class function인지
  5. Class 지원하는지 (
    • Encapsulation
    • Inheritance
    • Virtual function 지원 여부)

Python Data Type과 기본 Data Structure 실습

Text 가위바위보 게임

import random

def get_player_choice():
  """
  get_player_choice() -> string
  Return "바위" or "가위 or "보"
  """
  choice = input("가위바위보! : ")
  while choice != "가위" and choice != "바위" and choice != "보":
    choice = input("가위바위보! : ")
  return choice

def get_computer_choice():
  """
  get_computer_choice -> string
  Return "바위" or "가위 or "보"
  """
  tup = ("가위", "바위", "보")
  return tup[random.randint(0,2)]

def who_wins(player, computer):
  """
  who_wins(player, com) -> string
  Return if player wins 'player'
  elif computer wins 'computer'
  else None
  """
  if player == computer:
    return None
  if (player == "바위" and computer == "가위") or\
  (player == "가위" and computer == "보") or\
  (player == "보" and computer == "바위"):
    return 'player'
  else:
    return 'computer'

def play_one():
  """
  play_one -> string
  Return if player wins 'player'
  elif computer wins 'computer'
  """
  player_win = 0
  computer_win = 0
  while player_win == computer_win:
    player = get_player_choice()
    computer = get_computer_choice()
    result = who_wins(player, computer)
    print(f'Player {player} vs Computer {computer}')
    if result == 'player':
      player_win += 1
    elif result == 'computer':
      computer_win += 1
    if player_win > computer_win:
      return 'player'
    else:
      return 'computer'

def check_final_winner(result):
  """
  check_final_winner(result) -> string
  result : ex) ['player', 'player']
  Return if 'player' >= 2 in result, 'Player'
  elif 'computer' >=2 in result, 'Computer'
  else None
  """
  print(f"Player {result.count('player')}승 | Computer {result.count('computer')} 승")
  if result.count('player') >= 2:
    return 'Player'
  else:
    return 'Computer'

def play():
  """
  play() -> None
  3판 2선승가위바위보
  """
  result_list = []
  for i in range(3):
    result_list.insert(i, play_one())
  print(check_final_winner(result_list)+" Wins!!")

if __name__=="__main__":
  play()

ASCII와 UNICODE

ASCII와 UNOCODE의 역사, UNICODE의 Encoding, Decoding 방법도 배웠다.

Python Bubble Sort

def bubble_sort(li):
  n = len(li)
  for i in range(n-1):
    for j in range(n-1-i):
      if li[j] > li[j+1]:
        li[j], li[j+1] = li[j+1], li[j]

if __name__ == "__main__":
  li=[6, 2, 1, 4]
  bubble_sort(li)
  print(li)

간단한 Bubble Sort function을 만들었다.

알고리즘

CodeWars 6kyu. Persistent Bugger

그리고 LeetCode의 Medium Level 문제를 풀려고 했는데 Dynamic Programming 개념이 들어가 쉽지 않다. 주말 내내 풀어야겠다.