일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Pygame
- API플랫폼
- HTML
- 프로그램
- 부트스트랩
- 오류
- SMTP
- API
- 프로젝트
- 유데미
- 파이썬
- 계산기
- 웹크롤링
- 게임
- 최저가
- 상태코드
- twilio
- Python
- udemy
- Sheety
- Game
- 웹페이지
- 파싱
- ndarray
- Endpoint
- 쉬티
- phython
- Tequila
- HTTP
- class
- Today
- Total
데이터 분석가
파이썬(Python) 경매(bidding) 프로젝트 본문
안녕하세요 !
그림은 직접 그린 그림인데 어떤가요 ㅎㅎ 잘 그렸을까요
이번 시간에는 Def, While not을 활용한
경매 최종 입찰 프로그램을 만들어 보겠습니다 !
From replit import clear
From art import logo
Print(logo)
logo = '''
___________
\ /
)_______(
|"""""""|_.-._,.---------.,_.-._
| | | | | | ''-.
| |_| |_ _| |_..-'
|_______| '-' `'---------'` '-'
)"""""""(
/_________\\
.-------------.
/_______________\\
'''
먼저 clear 함수를 불러옵니다 clear 함수는 리스트 [], 딕셔너리{} 안에 속한 내용물들을
비워주는 함수입니다. clear() 사용 시 싹 비워지는 것을 볼 수 있습니다 !
경매 시작을 알리는 경매 진행자 '망치(?)'입니다.
로고는 사실 위와 같이 불러올 필요 없이 From art import logo로 대체됩니다.
bids = {} #입찰 값을 넣을 딕셔너리 생성
bidding_finished = False #비딩 종료, While not문은 False값 반환 시 종료
# 이 때 bidding_record = {"A" : 100, "B" : 1000} 같은 형식으로 저장
def find_highest_bidder(bidding_record): #최고 입찰자를 찾는다
highest_bid = 0 #비딩값은 0으로 시작
winner = "" #추후 최종입찰자의 이름
for bidder in bidding_record: #기록된 입찰기록에서 입찰자로 조회
bid_amount = bidding_record[bidder] #기록된 입찰자 인덱싱하여 순서대로 실행
if bid_amount > highest_bid: #새로운 입찰값이 기존 최종입찰값보다 높다면
highest_bid = bid_amount #새로운 최고입찰값
winner = bidder #최종입찰자
print(f"The winner is {winner} with a bid of ${highest_bid}")
bids = {} 딕셔너리를 선언합니다.
그리고 Whle not 반복문(Flase 반환 시 중단)을 사용할 거기 때문에 기본 값으로 Flase를 맞춰줍시다.
그 후 Def 반복문으로 find_highest_bidder 을 구하기 위한 변수를 bidding_record 설정합니다.
그 후 for문을 이용해 input 함수로 입력된 bidding_record를 범위로 bidder(임의변수)로 반복합니다.
ㄴ 이 말은 우리들이 흔히 아는 for i in range 의 형태를 = >> for bidder in bidding_record 로 변환한 것 뿐입니다.
(다음 코드에서 input(name),int(input(price)로 각각 짝을 맞춰 딕셔너리로 불러올 예정입니다)
ㄴ 딕셔너리에 저장된 입찰 기록을 bidding_record[bidder] >> 입찰자 인덱싱
if문을 이용해 새로운 입찰 기록이 highest_bid에 저장된 기존 입찰가보다 높다면 그 값으로 대체합니다.
while not bidding_finished: #6번째 행의 True 값과 연관
name = input("What is your name?: ")
price = int(input("What is your bid?: $"))
bids[name] = price #bids = {} 딕셔너리에 이미 넣어진 name : "" 밸류 값에 해당한다
should_countiue = input("Are there any other bidders? Type 'yes' or 'no'.\n")
#입찰자가 더 있습니까 ?
if should_countiue == "no": #또 다른 입찰자가 '없다'
bidding_finished = True #While not = Ture 값으로 while not문을 빠져나가 초기값Flase로 종료
find_highest_bidder(bids) #
elif should_countiue == "yes": #또 다른 입찰자가 존재한다
clear() #딕셔너리 {} 최고 입찰자만 남기고 다른 값 삭제
다음 while not 반복문을 이용해 bidding_finished = Flase 값이 나올 동안 반복합니다.
name, price를 input으로 입력받아
bids [name]으로 name을 생성함과 동시에 bids[name] = price으로 EX) bids = { "name" : price},,.
name(Key) : Price(value) 를 생성합니다.
sould_countiue = 'yes', 'no'로 입력받아
if문을 이용해 'yes'일 경우 bidding_finished = True로 while not 문으로 돌아가 새로운 입찰가를 입력받고
'no' 일 경우 최고 입찰자만 제외하고 삭제하여 최종 입찰자를 print(f'{} )로 출력한다.
이번 시간에는 저희가 배운 반복문을 무려 3개나 적용시켜 봤는데요
( Def 반복문, While not 반복문, for 반복문 )
이처럼 다양하게 알고리즘을 짜는 연습을 하면 실력이 점차 늘어가는 것을 볼 수 있어서 참 좋은거 같습니다 ㅎㅎ
딕셔너리를 입력 받는 식이 조금 복잡해 보일 수도 있는데 사실 간단히 표현하자면
bids[name] = price 로 "name"과 price를 동시에 입력할 수 있다는 것을 알고 있으면 이해가 쉬울거 같습니다.
어렵긴 하지만 반드시 알고 넘어가야 하는 개념이기에 반복 연습을 해봅시다 !!
'파이썬(python) 프로젝트 모음' 카테고리의 다른 글
파이썬(Python) 블랙잭(Blackjack) 프로젝트 (0) | 2023.03.22 |
---|---|
파이썬(Python) 계산기(calculator) 프로그램 만들기 (0) | 2023.03.22 |
파이썬(Python) 딕셔너리(dictionary) 채점프로그램, 목록 사전 (0) | 2023.03.21 |
파이썬(Python) 카이사르 암호(caesar cipher) 프로젝트 (1) | 2023.03.15 |
파이썬(Python) 소수(Prime_number) 프로젝트 (0) | 2023.03.14 |