도서/컴퓨터

"파이썬 코딩 0교시" 책 리뷰

library04 2024. 11. 5. 16:56

[최초 작성 : 24.11.05]

[추가 수정 : 24.11.06]


1. 책 소개
  • 파이썬 입문자용
  • 핵심 개념으로 적용할 수 있는 미니 프로젝트 포함 

줄리 스웨이 저자, 임성국 옮김 (프리렉)

 

2. 배운 내용
  • 주요 키워드
  • 자주 실수하는 부분

 

3. 미니 프로젝트
  • 알고리즘 도식화(순서도, 의사코드)  →  필요한 변수의 개수 정하기  →  #작성자#작성일#한줄설명  →  코드 작성
  • 1. 크레이지 토크 (Mad Libs)
더보기
# WJL
# 24.11.05
# 단어를 사용해서 장난 문장을 만드는 프로그램

import random

# 프로그램의 기능을 출력합니다.
def instructions():
    print("오늘의 헬스에 오신 것을 환영합니다. \
    \n여러분의 이야기를 쓰는 것을 돕는 게임입니다. \
    \n저는 당신에게 명사나 동사와 같은 단어들을 물어볼 것입니다.")
    print("만들어지는 문장은 한국어입니다. \
    \n오늘 운동할 부위를 단어로 알려주세요!! \n")

# 변수 선언 및 초기화
noun1 = ""

startSent = ["원준이의", "도훈이의", "성우의", "호윤이의"]
firstSent = ["잘 훈련된", "광이 나는", "울끈불끈", "괴력의", "근 손실의", "지방이 낀"]
secondSent = ["은/는"]
thirdSent = ["오늘도", "아쉽지만", "미약하나마", "언제나", "항상", "가끔씩", "40살까지", "50살까지"]
forthSent = ["빛을 발한다", "열일한다", "강해진다", "근골격량의 증가가 일어난다", "아쉽다옹"]
fifthSent = ["!", "?", "!!"]

print("게임을 시작하시겠습니까?")
play = input("'y' 또는 'n'을 입력하세요.: ")

while (play == "y") :
    instructions()
    noun1 = input("오늘 운동할 부위를 입력하세요: ")

    print(startSent[random.randint(0, len(startSent)-1)], firstSent[random.randint(0, len(firstSent)-1)], noun1, secondSent[0],
          thirdSent[random.randint(0, len(thirdSent)-1)], forthSent[random.randint(0, len(forthSent)-1)], fifthSent[random.randint(0, len(fifthSent)-1)])
    print("게임을 다시 하시겠습니까?")
    play = input("'y' 또는 'n'을 입력하세요. :")
                                                                    
print("오늘도 알찬 헬스 되세요!")
  • 2. 가위바위보 ▶ f-string, 대소문자 구분X, 잘못된 입력 처리, 메인 게임 로직을 함수화, 관용구
더보기
#WJL
#24.11.06
#가위바위보 게임 : 플레이어 vs 컴퓨터

import random

def convert(computer_choice):
    if computer_choice == 1:
        return 'r'
    elif computer_choice == 2:
        return 'p'
    else:
        return 's'

def score(user_wins, computer_wins):
    print("\nScore: 플레이어 - ", user_wins, "컴퓨터 - ", computer_wins)
    if computer_wins == user_wins and computer_wins > 0:
        print("\n동점입니다! 한 번 더 해서 컴퓨터를 이겨 주세요!")
    elif computer_wins > user_wins:
        print("\n컴퓨터가 이기고 있어요. 컴퓨터를 이길 때까지 도전!")
    elif computer_wins < user_wins:
        print("\n당신이 이기고 있어요! 더 큰 점수차로 이겨 볼까요!")

def play_game():
    computer_wins = 0
    user_wins = 0
    
    print("가위바위보 게임에 오신 것을 환영합니다!")
    print("컴퓨터와 게임을 하려면 다음 규칙을 따라야 합니다.:")
    print("\n 's'을 입력하면 가위\n 'r'를 입력하면 바위\n 'p'를 입력하면 보\n")
    print("게임 종료를 원하시면 'e'를 선택해주세요: ")

    while True:

        # 1. 사용자 입력 받기
        user = input().lower()  # 사용자 입력을 소문자로 변환

        # 2. 종료 조건 검사
        if user == "e":
            print("게임이 종료되었습니다. 나중에 다시 게임해 주세요!")
            break

        # 3. 입력 유효성 검사    
        if user not in ['r', 'p', 's']:
            print("\n잘못된 입력입니다. 'r', 'p', 's', 'e' 중 하나로 선택해 주세요.")
            continue

        # 4. 컴퓨터의 선택
        computer = convert(random.randint(1, 3))
        print(f"\n컴퓨터의 선택: {'가위' if computer == 's' else '바위' if computer == 'r' else '보'}")
        print(f"당신의 선택: {'가위' if user == 's' else '바위' if user == 'r' else '보'}")

        # 5. 승자 결정 (게임 로직)
        if computer == user:
            print("\n동점입니다!")
        elif (computer == "r" and user == "s") or \
             (computer == "p" and user == "r") or \
             (computer == "s" and user == "p"):
            computer_wins += 1
            print(f"\n컴퓨터가 이겼습니다!")
        else:
            user_wins += 1
            print(f"\n당신이 이겼습니다!")

        # 6. 점수 출력
        score(user_wins, computer_wins)
        print("\n--------------------------------------------\n\n다음 라운드를 시작합니다.")
        print("\n 's'를 입력하면 가위\n 'r'을 입력하면 바위\n 'p'를 입력하면 보")
        print("\n게임 종료를 원하시면 'e'를 선택해 주세요: ")

# 직접 실행할 때만 게임 시작 (코드의 모듈화)
if __name__ == "__main__":
    play_game()