데이터 노가다 일지

딕셔너리를 이용한 경매 프로그램 본문

Python🐍

딕셔너리를 이용한 경매 프로그램

hoho0311 2025. 1. 19. 23:04

다른 여러 프로그래밍 언어와 마찬가지로 Python에도 딕셔너리 구조가 있다.

흔히 말해 사전을 생각하면 쉽다.

'apple'이라는 단어를 사전에서 찾으면

'apple'의 대한 여러 뜻이 나오는 것처럼

딕셔너리도 비슷한 구조이다.

fruits = {
	'apple' : 2
    'banana' : 3
    'orange' : 4
}

위와 같은 형태로 선언 가능하다.

딕셔너리의 이름은 fruits이다.

키는 'apple', 'banana', 'orange'와 같고

값은 2, 3, 4이다

 

https://docs.python.org/ko/3/tutorial/datastructures.html#dictionaries

 

5. Data Structures

This chapter describes some things you’ve learned about already in more detail, and adds some new things as well. More on Lists: The list data type has some more methods. Here are all of the method...

docs.python.org

자세한 내용은 파이썬 문서를 첨부하겠다.

 

땅땅땅~

경매 프로그램을 작성해 보았다.

 

 

먼저 프로그램 시작 시 경매자의 이름, 가격을 물어본다.

마지막으로는 또 다른 경매자가 있는지 물어본다.

만약 경매자가 있을 시에 yes를 입력하고 

입력한 내용을 다른 경매자가 보지 못하게 하기 위해 출력을 지운다.

( 이 프로그램은 사용자가 하나의 컴퓨터에 경매 정보를 입력한다고 가정한다. )

 

계속 반복하다 추가 경매자가 없을 시 최고로 높은 경매 가격을 표시한다.

 

이제부터 코드를 설명하겠다.

 

import art
print(art.logo)
bids = {}
continue_bid = True

def find_highest_bidder(bidder_dic):
    highest_bidder = 0
    winner = ''
    for bidder in bidder_dic:
        bid_amount = bidder_dic[bidder]
        if bid_amount > highest_bidder:
            highest_bidder = bid_amount
            winner = bidder
    print(f"The winner is {winner} whit ${highest_bidder}")

 

프로그램 시작 시에 경매 망치? 를 나타내는 로고를 출력한다.

경매자의 이름과 가격을 저장하는 bids 딕셔너리를 선언한다.

뒤에 while문을 만들 거 기 때문에 continue_bid = True로 선언한다.

 

다음 함수는 최고 높은 가격을 제시한 경매자를 찾는 함수이다.

파이썬은 특이하게도 for 문을 통해 딕셔너리를 찾으면 키 값을 반환한다.

이를 통해 찾은 키값으로 가장 높은 금액의 돈을 찾을 수 있다.

 

찾은 금액의 가장 높은 금액을 highest_bidder에 넣는다.

winner에는 경매자의 이름을 넣는다.

 

마지막으로 입찰자의 정보를 출력한다.

 

while continue_bid:
    # TODO-1: Ask the user for input
    bidder_name = input("What is your name? : ")
    price = int(input('What is your bid? : '))
    # TODO-2: Save data into dictionary {name: price}
    bids[bidder_name] = price

    # TODO-4: Compare bids in dictionary

    # TODO-3: Whether if new bids need to be added
    consistent = input("Are there any other bidders? Type 'yes' or 'no' : \n").lower()
    if consistent == 'no':
        continue_bid = False
        find_highest_bidder(bids)
    elif consistent == 'yes':
        print('\n' * 100)

 

마지막으로 while문이다.

 

맨 처음 선언한 continue_bid를 기준으로 계속 반복한다.

 

처음에는 경매자의 이름과 가격 정보를 입력받아 bids 딕셔너리에 저장을 한다.

 

그다음 다른 경매자가 있는지 사용자에게 'yes'와 'no'를 입력받는다.

 

만약 'no'를 입력받을 시 while문은 중단되고 최고 입찰자를 찾는 함수가 실행된다.

'yes'를 입력받을 시 콘솔의 출력물을 지워주는 코드를 작성했다.

( 사실 지워지는 게 아니라 위로 올리는 거다... 이거에 대한 기능은 잘 모르겠다. )

 

사실 이번 프로그램은 for문에서 살짝 버벅거리기만 했고 쉬웠던 거 같다.

앞으로도 이러면 좋겠다...

 

마지막으로 로고 첨부하고 글을 마치겠다.


logo = r'''
                         ___________
                         \         /
                          )_______(
                          |"""""""|_.-._,.---------.,_.-._
                          |       | | |               | | ''-.
                          |       |_| |_             _| |_..-'
                          |_______| '-' `'---------'` '-'
                          )"""""""(
                         /_________\\
                       .-------------.
                      /_______________\\
'''

'Python🐍' 카테고리의 다른 글

파이썬을 이용한 블랙잭 게임  (0) 2025.01.21
계산기 프로젝트  (2) 2025.01.20
카이사르 암호화 복호화  (2) 2025.01.19
Hang man game  (2) 2025.01.17
비밀번호 생성기  (0) 2025.01.16