누군가와 함께 여행을 갈 때는 서로 여행 스타일이 비슷해야 더 즐거운 시간을 보낼 수 있습니다. 아래 표의 각 항목에 대해서 여러분이 선호하시는 여행 방법을 체크해두시면 친구와 함께 여행을 갈 때 서로를 더 배려할 수 있을 텐데요. 구분 선택 1 선택 2 경비 N분의 1 각자 계획 철저 즉흥 숙박 호텔 게스트 하우스 교통 택시 대중교통 식사 맛집 아무집 성향 부지런 여유 어쩌면 여행을 하는 시간보다 여행을 준비하는 과정이 더 오래 걸릴 수도 있습니다. 특히 해외 여행을 떠나게 되는 경우 항공사 선택에서부터 여행 일정, 숙소, 차량 렌트, 시간표 작성 등 많은 부분을 신경써야 하는데, 이 때 여행사에서 제공하는 패키지 상품을 이용하면 훨씬 수월하게 여행을 할 수 있습니다. 비행기에서부터 현지 도착 후 이동..
자동차를 운전하다가 접촉사고가 나서 범퍼가 파손되거나, 오랜 기간 주행으로 타이어가 심하게 마모된다면 정비소에 가서 교체 수리를 받게 됩니다. 이 때 보통 범퍼만 교체하거나 타이어만 교체하게 되므로 범퍼 교체 비용, 타이어 교체 비용만 지불하면 되며 수리 비용도 크게 부담되지는 않습니다. 그런데 만약 범퍼 교체를 하러 갔는데 범퍼가 엔진까지 연결이 되어 있어서 엔진도 교체를 한다거나 수리 작업을 해야 한다고 하면 어떨까요? 아무래도 수리 비용도 훨씬 비싸지고 수리 기간도 꽤 많이 걸릴겁니다. 소프트웨어도 이처럼 부품만 교체하거나 추가할 수 있도록 만들면 유지보수도 쉽고 코드의 재사용도 수월해지는 장점이 있는데요. 함수 정의나 클래스 등 서로 관련이 있거나 비슷한 기능을 하는 파이썬 문장들을 담고 있는 파..
지금까지 배운 내용을 복습하기 위한 퀴즈를 드리겠습니다. 직접 한 번 풀어보시고 나서 정답을 확인해주세요. Quiz) 동네에 항상 대기 손님이 있는 맛있는 치킨집이 있습니다. 대기 손님의 치킨 요리 시간을 줄이고자 자동 주문 시스템을 제작하였습니다. 시스템 코드를 확인하고 적절한 예외처리 구문을 넣으시오. 조건1 : 1보다 작거나 숫자가 아닌 입력값이 들어올 때는 ValueError 로 처리 출력 메세지 : "잘못된 값을 입력하였습니다." 조건2 : 대기 손님이 주문할 수 있는 총 치킨량은 10마리로 한정 치킨 소진 시 사용자 정의 에러[SoldOutError]를 발생시키고 프로그램 종료 출력 메세지 : "재고가 소진되어 더 이상 주문을 받지 않습니다." [코드] chicken = 10 # 남은 치킨 수..
옷 가게에서 마음에 드는 옷을 사고 매장을 나서면 매장 직원은 친절하게 감사하다는 인사를 전합니다. 하지만 때로는 마음에 든다고 생각했던 옷을 피팅룸에서 막상 입어보니 잘 어울리지 않는 경우도 있지요. 이런 경우 옷을 하나도 구매하지 않고 매장을 나서게 되지만 그래도 매장 직원은 친절하게 감사하다는 인사를 전합니다. 옷을 사도, 사지 않아도 늘 친절하게 감사하다고 하니 그 친절이 고마워서라도 왠지 다음 번 매장을 방문할때는 꼭 옷을 하나 사야지 하는 마음이 생기곤 합니다. try 구문을 사용할 때 finally 라는 게 있습니다. finally 는 try 구문 내에서 에러가 발생하건 말건 try 를 벗어나는 시점에 무조건 실행되는 구문입니다. finally 는 try 와 except 로 이루어진 구문의 ..
지금까지 우리는 이미 정의되어 있는 에러에 대한 예외처리를 해보았습니다. 그런데 파이썬에서는 필요에 따라 사용자가 새롭게 에러를 정의하고 그에 대한 예외처리를 할 수도 있는데요. 앞에서 만든 한 자리 숫자 나누기 전용 계산기 프로그램에서 실수로 두 자리 이상의 수를 입력했을 때 사용자가 입력한 값 중 어떤 값이 잘못되었는지를 보다 자세히 알려주도록 코드를 수정해보겠습니다. 먼저 두 자리 이상의 수를 입력해서 발생한 에러라는 의미로 BigNumberError 라는 클래스를 만들고 파이썬에서 이미 정의되어 있는 Exception 이라는 클래스를 상속받도록 합니다. 이렇게 하면 앞에서 봤던 ValueError, IndexError 와 비슷하게 사용자가 필요로 하는 어떤 새로운 형태의 Error 를 정의할 수 ..
이번에는 의도적으로 에러를 발생시키는 방법을 공부해보겠습니다. 실제로 에러 상황이 발생한 것이 아니라도 프로그램이 허용하지 않는 동작을 하려고 할 때 의도적으로 에러를 발생시킬 수 있으며 문법은 다음과 같습니다. raise 에러종류 계산기의 종류를 조금 바꿔서 한 자리 숫자에 대해서만 나누기를 할 수 있도록 해보겠습니다. 다만 나눗셈을 하기 전에 사용자로부터 입력받은 값들이 한 자리 숫자가 맞는지 확인하여 조건에 맞지 않을 때는, 즉 10 이상일 때는 의도적으로 ValueError 를 발생시키고 except 를 통해 예외처리를 하도록 하겠습니다. try: print("한 자리 숫자 나누기 전용 계산기입니다.") num1 = int(input("첫 번째 숫자를 입력하세요: ")) num2 = int(inp..
버스를 타고 교통카드를 찍는데 단말기에서 "잔액이 부족합니다" 라고 나옵니다. 충전금액이 충분했던 것 같은데 다시 한 번 찍어봐도 여전히 "잔액이 부족합니다" 라고 나오네요. 버스는 이미 출발했고 지갑에 다른 카드는 없고 현금은 더더욱 없고 내릴수도 없고 기사님도 쳐다보고 손님들도 쳐다보고 ... 이럴 땐 어떻게 해야할까요? 이번에 공부할 내용은 예외처리입니다. 먼저 우리 실생활에서 겪을 수 있는 상황을 예로 들어보겠습니다. 1. 택배 기사님께서 배송중인 물건을 보니 주소가 아파트의 11층으로 되어 있는데 실제로는 10층까지만 있는 경우 2. 버스를 타고 단말기에 교통카드를 갖다댔는데 "잔액이 부족합니다" 라고 하는 경우 3. 컴퓨터에서 계산기 프로그램을 이용하려고 하는데 실수로 숫자 대신 문자를 입력 ..
지금까지 배운 내용을 복습하기 위한 퀴즈를 드리겠습니다. 직접 한 번 풀어보시고 나서 정답을 확인해주세요. Quiz) 주어진 코드를 활용하여 부동산 프로그램을 작성하시오. (출력 예제) 총 3대의 매물이 있습니다. 강남 아파트 매매 10억 2010년 마포 오피스텔 전세 5억 2007년 송파 빌라 월세 500/50 2000년 [코드] class House: # 매물 초기화 : 위치, 건물 종류, 매물 종류, 가격, 준공년도 def __init__(self, location, house_type, deal_type, price, completion_year): pass # 매물 정보 표시 def show_detail(self): pass 이번 퀴즈는 주어진 클래스를 완성하는 것이 목표입니다. 생성자를 통해 ..

지금까지 만든 클래스들을 활용하여 스타크래프트 게임을 한 판 해보겠습니다. 게임의 시작과 종료를 알리는 함수를 각각 정의하고 시작하겠습니다. 스타크래프트에서는 게임을 하다가 도저히 상대방을 이길 수 없다고 판단되면 졌다는 의미로 채팅창에 gg (good game) 를 입력하고 퇴장하는 것이 예의입니다. ... # 클래스 생략 # 게임 시작 def game_start(): print("[알림] 새로운 게임을 시작합니다.") # 게임 종료 def game_over(): print("Player : gg") # good game print("[Player] 님이 게임에서 퇴장하셨습니다.") 게임을 시작함과 동시에 마린 3기와 탱크 2기, 그리고 레이스 1기를 만들어보겠습니다. 객체 이름은 편의상 각 유닛의 이..

지금까지 배운 클래스 내용을 바탕으로 마치 실제로 게임을 하는 것처럼 텍스트 기반의 스타크래프트 프로젝트를 완성해보도록 하겠습니다. 앞 장에서 super 를 공부하며 다뤘던 소스코드 및 유닛 생성 관련 부분은 제외하고 그 이전까지 만들었던 클래스들을 보완하는 방향으로 진행하겠습니다. 가장 기본이 되는 Unit 클래스부터 먼저 보겠습니다. 스타크래프트에서는 유닛이 생성될 때마다 각 유닛의 고유한 소리를 통해 생성되었음을 알려줍니다. 우리 코드에서는 소리 대신 __init__() 생성자에 print() 를 추가하여 어떤 유닛이 생성되었는지를 출력하도록 하겠습니다. move() 메소드에서는 유닛 이동 관련하여 2번이나 출력하게 되어 있으므로 처음 출력문인 [지상 유닛 이동] 문구는 제외하도록 하겠습니다. 그리..
이번에 공부할 내용은 super 입니다. 앞에서 건물 유닛 클래스를 만들 때 pass 로만 남겨두었던 __init__() 생성자의 코드를 완성해보겠습니다. Unit 클래스를 상속받았기 때문에 Unit 의 __init__() 을 활용하면 되는데, 건물은 지상 이동을 할 수 없으므로 speed 정보는 0 으로 하고 다음 줄에서 location 멤버 변수를 정의하겠습니다. (실제 게임에서 테란의 건물들은 날아서 이동이 가능합니다!) class BuildingUnit(Unit): def __init__(self, name, hp, location): Unit.__init__(self, name, hp, 0) # speed 0 : 건물은 지상 이동 불가 self.location = location 그런데 가만 생..

스타크래프트에는 유닛을 뽑는 수에 제한이 있습니다. 처음 게임을 시작할 때 8 만큼의 인구 수에 해당하는 유닛을 만들 수 있는데, 그 수를 초과하게 되면 더 이상 유닛을 뽑지 못하게 되지요. 이 때 더 많은 유닛을 계속하여 뽑기 위해서는 각 종족별로 무언가를 더 해줘야 하는데 테란의 경우 서플라이 디폿이라는 건물을 지으면 됩니다. 서플라이 디폿 건물이 하나씩 늘어날 때마다 인구 수 8 만큼 유닛을 더 만들 수 있게 되는 것이죠. 이번에는 건물을 위한 클래스를 하나 만들어 보겠습니다. 건물도 일반 유닛처럼 이름과 체력이 있는데 적군으로부터 공격을 받으면 파괴될 수가 있습니다. Unit 클래스에 공통 속성이 있으니 이를 상속 받아서 만들도록 하구요. 건물을 지을 때는 어느 위치에 지을지 플레이어가 정해야 하..
- Total
- Today
- Yesterday
- 주피터노트북
- 챗GPT
- 파이게임
- 파이썬
- game
- 행맨
- Unity
- coloso
- Visual Studio Code
- ChatGPT
- Coding
- onlineclass
- Mac
- Xcode
- 나도코딩
- GUI
- Tkinter
- 비주얼 스튜디오 코드
- 환경설정
- pygame
- 아나콘다
- 코랩
- vscode
- c언어
- 프롬프트 엔지니어링
- repl.it
- pycharm
- Colab
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |