데이터 노가다 일지
딕셔너리를 이용한 경매 프로그램 본문
다른 여러 프로그래밍 언어와 마찬가지로 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 |