출처: 유데미 안젤라 파이썬 강의 에서 공부한 내용을 정리한 것입니다.(https://www.udemy.com/share/105H7s3@qYO3BzBDPxpyh6x6aAbsIdLQVTGVL2seKVi_uZTab19StDFyk-bXagc1nbXPJJGBqg==/)
내가 만든 구조도
사용해야 할 지식은: if, dictionary, dict 값 추가, clear, def(함수만들기), input, while 등
쓰니까 되게 단순한데 내가 while을 사용하지 않아서 엄청나게 헤맸다... 한시간 고민하다 결국 답 봄🥲
경매 프로그램에 대해 설명해 보겠다.
- 경매 프로그램은 말 그대로 어떤 물건을 살 때 가장 높은 값을 보낸 사람을 알려주는 프로그램을 만드는 것이다.
- 이름을 묻고, 낙찰가를 묻고, 그 다음 사람이 있는지 묻는다
-> 있다면 이 질문을 반복한다.
-> 없다면 낙찰가가 가장 높은 사람과 낙찰값을 알려준다.
이건 내가 짠 코드.
한글로 자꾸 쓰니까 헷갈린다. 되도록이면 영어로 사용해야 겠다..(특히 for 문에서 헷갈림)
import os
os.system('cls')
logo = '''
___________
\ /
)_______(
|"""""""|_.-._,.---------.,_.-._
| | | | | | ''-.
| |_| |_ _| |_..-'
|_______| '-' `'---------'` '-'
)"""""""(
/_________\\
.-------------.
/_______________\\
'''
print(logo)
경매_딕셔너리 = {}
경매_질문 = False
def 낙찰자_찾기(낙찰_딕셔너리):
최종_낙찰자 = ""
낙찰_가격 = 0
for 낙찰자 in 낙찰_딕셔너리:
사람별_낙찰값 = 낙찰_딕셔너리[낙찰자]
if 사람별_낙찰값 > 낙찰_가격:
낙찰_가격 = 사람별_낙찰값
최종_낙찰자 = 낙찰자
print(f"최종 낙찰자는 {최종_낙찰자}이며 낙찰값은 {낙찰_가격}입니다.")
while not 경매_질문:
이름 = input("귀하의 성함은 무엇입니까?: ")
경매가 = int(input("귀하의 낙찰가는 얼마입니까? (원): "))
경매_딕셔너리[이름] = 경매가
다음_구매자 = input("다음 구매자가 있나요? 네 or 아니오 \n")
if 다음_구매자 == "아니오":
경매_질문 = True
낙찰자_찾기(경매_딕셔너리)
그리고 비쥬얼 스튜디오에서 어떻게 터미널을 함수로 clear할 수 있는지 잘 모르겠다.
구글링해도 터미널에서 함수 사용하면 지우는 것 나오고
코드쓰는 곳에서 함수 사용해서 clear하는 내용이 안 나온다....
그래서 전 사람이 사용한 낙찰값 다 볼수있는 코드이다 ㅎㅎ
주말에 다시 복습해봐야겠다!
유데미 안젤라 강의 해설
from replit import clear
logo = '''
___________
\ /
)_______(
|"""""""|_.-._,.---------.,_.-._
| | | | | | ''-.
| |_| |_ _| |_..-'
|_______| '-' `'---------'` '-'
)"""""""(
/_________\\
.-------------.
/_______________\\
'''
print(logo) # 1. 경매 로고 출력
bids = {} # 빈 딕셔너리 만들기
bidding_finised = False # while loop 위해서 끝나기 전까지 거짓으로 만들어 줌
def find_highest_bidder(bidding_record):
#최고 낙찰자 찾는 함수 만들기(딕셔너리) 예) bidding_record = {"soyeon": 123, "james": 321}
highest_bid = 0
winner = ""
for bidder in bidding_record: # 딕셔너리 안에서 key 꺼내는 for 문
bid_amount = bidding_record[bidder] # value 꺼내는 식 만들어주기
if bid_amount > highest_bid: # 만약 첫번째 value가 다른 수보다 크다면
highest_bid = bid_amount # 그 값은 highest_bid값으로 들어간다.
winner = bidder #그리고 그 값을 가진 bidder는 winner값으로 들어간다.
print(f"The winner is {winner} with a bid of ${highest_bid}")
while not bidding_finised: #false면 계속 while문이 돌아간다.
name = input("What is your name? ") # 2. 이름을 물어본다.
price = int(input("What's your bid?: $")) # 3. 경매 가격을 물어본다.
bids[name] = price # 4. 빈 딕셔너리에 값을 추가해 주는 과정. -> 딕셔너리[키] = 값
should_contiue = input("Are they any other bidders? Type 'yes' or 'No'")
# 5. 계속할 것인지 묻기(예/아니오)
if should_contiue == "no": # no -> while loop를 멈추고 결과를 반환해야 한다.
bidding_finised = True # while을 True로 만들어준다.
find_highest_bidder(bids) # 또한 winner 찾는 함수 실행해준다.
elif should_contiue == "yes":
clear() # yes -> 콘솔에 있는 모든 정보 지워줌(전 사람이 볼 수 없게) / 그리고 while함수 실행된다.
'개발공부 > Python' 카테고리의 다른 글
파이썬_title()함수 (0) | 2023.03.16 |
---|---|
파이썬_출력과 함수(return)(수정중) (0) | 2023.03.16 |
파이썬_리스트와 딕셔너리 중첩하기 (1) | 2023.03.15 |
파이썬 딕셔너리 예제 풀기_등급 만들기 프로그램 (0) | 2023.03.14 |
파이썬_딕셔너리(dictionary) (0) | 2023.03.14 |