Skip to content

Commit d9f4c57

Browse files
committed
hw5
1 parent fba26d7 commit d9f4c57

File tree

1 file changed

+92
-1
lines changed

1 file changed

+92
-1
lines changed

homework5.py

+92-1
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,95 @@ def convert():
6464
print(f"{data[from_country-1][1]} {answer_3} is {data[to_country-1][1]} {result}")
6565
return result
6666

67-
convert()
67+
convert()
68+
69+
70+
# import os
71+
# import requests
72+
# from bs4 import BeautifulSoup
73+
# from babel.numbers import format_currency
74+
75+
# os.system("clear")
76+
77+
78+
# code_url = "https://www.iban.com/currency-codes"
79+
# currency_url = "https://transferwise.com/gb/currency-converter/"
80+
81+
82+
# countries = []
83+
84+
# codes_request = requests.get(code_url)
85+
# codes_soup = BeautifulSoup(codes_request.text, "html.parser")
86+
87+
# table = codes_soup.find("table")
88+
# rows = table.find_all("tr")[1:]
89+
90+
# for row in rows:
91+
# items = row.find_all("td")
92+
# name = items[0].text
93+
# code =items[2].text
94+
# if name and code:
95+
# if name != "No universal currency":
96+
# country = {
97+
# 'name':name.capitalize(),
98+
# 'code': code
99+
# }
100+
# countries.append(country)
101+
102+
103+
# def ask_country(text):
104+
# print(text)
105+
# try:
106+
# choice = int(input("#: "))
107+
# if choice >= len(countries) or choice < 0:
108+
# print("Choose a number from the list.")
109+
# return ask_country(text)
110+
# else:
111+
# print(f"{countries[choice]['name']}")
112+
# return countries[choice]
113+
# except ValueError:
114+
# print("That wasn't a number.")
115+
# return ask_country(text)
116+
117+
118+
# def ask_amount(a_country, b_country):
119+
# try:
120+
# print(f"\nHow many {a_country['code']} do you want to convert to {b_country['code']}?")
121+
# amount = int(input())
122+
# return amount
123+
# except ValueError:
124+
# print("That wasn't a number.")
125+
# return ask_amount(a_country, b_country)
126+
127+
# ask_country(text) 함수 (Line 34 ~ 46)
128+
# 지난 시간에 완성했던 ask() 함수와 거의 비슷하나 43번째 줄에서 countries[choice] 값을 리턴해주는 부분이 추가되었습니다.
129+
# user_country, target_country 값 구하기 (Line 64 ~ 65)
130+
# ask_country(text) 함수를 불러와 사용자가 고른 나라의 이름과 통화 코드를 저장 시켜줍니다.
131+
# user_country, target_country 모두 같은 방식으로 동작합니다.
132+
# amount 값 구하기 (Line 68)
133+
# 사용자가 얼마만큼의 돈을 환전할지 알아내야 합니다.
134+
# 그러기 위해선 ask_amount 함수를 작성하여 인자 값으로 user_country, target_country 를 보내야합니다.
135+
# ask_amount(a_country, b_country) 함수 (Line 49 ~ 56)
136+
# 사용자가 선택한 두 나라의 정보를 인자 값으로 받아왔습니다.
137+
# 두 나라의 정보는 오로지 사용자에게 질문을 던지는 출력문에만 쓰입니다.
138+
# amount = int(input()) 을 사용하여 사용자에게 환전할 돈의 양을 묻습니다.
139+
# 돈은 숫자이므로 반드시 int() 로 감싸서 형변환 시켜줍니다.
140+
# 그리고 amount 값을 리턴 시켜줍니다.
141+
# 사용자가 만약 숫자가 아닌 문자를 입력했을 경우를 대비하여 try-except문을 사용하여 예외처리를 해줍니다.
142+
# 사용자가 선택한 두 나라의 통화 코드(from_code, to_code) 가져오기 (Line 70 ~ 71)
143+
# 2번에서 구한 user_country, target_country 값을 이용하여 간단히 통화 코드를 가져올 수 있습니다.
144+
# 각각의 새로운 변수에 user_country['code'] , target_country['code'] 를 넣어주시면 오로지 통화 코드만 저장되는 것을 볼 수 있습니다.
145+
# 홈페이지에서 환전 결과를 가져오기 (Line 73 ~ 80)
146+
# 스크래핑을 하기에 앞서, requests 라이브러리를 이용하여 Transfer Wise 홈페이지에 HTTP 요청을 보내야합니다.
147+
# 사용자로부터 입력을 받은 정보들을 URL에 포맷팅하여 GET 방식으로 HTTP 요청을 아래와 같은 코드로 보냅니다.
148+
# currency_request = requests.get(f"{currency_url}{from_code}-to-{to_code}-rate?amount={amount}")
149+
# beautifulSoup 라이브러리를 사용하여 해당 홈페이지의 html 코드들을 가져옵니다.
150+
# 위의 사진은 환전 결과 값을 가져오기 위해 크롬 개발자 도구에서 inspect한 결과입니다.
151+
# 홈페이지의 코드 변경으로 인해 환전 결과의 value 값을 가져올 수 없습니다.
152+
# 그러므로 환전 결과 값을 가져오는 것이 아니라 다른 방법으로 접근하여야 됩니다.
153+
# 홈페이지 하단에 보시면 1 COP = 0.30937 KRW 이라는 값이 있는데 초록색 글씨로 되어있는 0.30937 을 긁어와서 amount 값이랑 곱해주는 것으로 환전 결과 값을 얻을 수 있습니다.
154+
# 저 초록색 값을 가져오기 위해 rate = currency_soup.find("span", {"class":"text-success"}).get_text() 이라는 코드를 작성해줍니다.
155+
# 혹시 rate 값이 존재하지 않을 경우도 생각하여 if rate: 를 사용하여 rate 값이 존재할 때만 환전 값을 구하도록 코드를 작성합니다.
156+
# 위에서 구한 rate 값을 float 형식으로 변환한 다음 amount 값이랑 곱하여 환전 값을 구하기 위해 아래와 같이 작성합니다.
157+
# result = float(rate) * amount
158+
# 마지막으로 환전할 돈의 양(amount) , 환전 결과(result) 를 format_currency() 를 이용하여 통화 형식으로 포맷 시켜줍니다.

0 commit comments

Comments
 (0)