소연의_개발일지
article thumbnail

출처: 유데미 안젤라 파이썬 강의 에서 공부한 내용을 정리한 것입니다.(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함수 실행된다.
profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!