Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- #abc 프로젝트 멘토링 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업 #공부일지 #멘토링일지
- #abc부트캠프 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업
Archives
- Today
- Total
나른한 코딩 생활
[34일차] ABC 부트캠프 프로젝트 - 4 본문
오전
피그마로 디자인 확립

자료조사 및 프로토타입 데이터 적용

위 시각화 데이터를 토대로 어제 시험했던 웹 크롤링의 목적지로 정한다

랜덤 이미지 출력
어제부터 맵과 함께 만들고 있던 랜덤 이미지출력의 기본 틀을 잡았다
import tkinter as tk
from PIL import Image, ImageTk
import random
import os
emission_co2 = 0.0
footprint_co2 = 0
def set_emission_co2(value):
global emission_co2
emission_co2 = value
def set_footprint_co2(value):
global footprint_co2
footprint_co2 = value
def Dp_Random_Img(image_folder):
# 이미지 폴더의 모든 파일을 가져옴
image_files = [f for f in os.listdir(image_folder) if f.endswith(('png', 'jpg', 'jpeg', 'gif'))]
# 이미지와 관련된 데이터를 리스트로 관리
image_data = {
'tree.jpg': (12, '그루', '나무'),
'bee.png': (5, '마리', '벌'),
'sunflower.jpg': (8, '송이', '해바라기')
}
# 랜덤으로 이미지 파일 선택
selected_image = random.choice(image_files)
# 이미지 파일 경로
image_path = os.path.join(image_folder, selected_image)
# 선택된 이미지에 따른 변수 설정
if selected_image in image_data:
n, unit, random_obj = image_data[selected_image]
else:
n, unit, random_obj = (1, '개', '알 수 없는 객체')
# 최상단에 표시할 텍스트와 폰트
top_text = f"고마워요! 덕분에 {n}{unit}의 {random_obj}들을 지켰어요!"
top_text_font = ("NanumGothic", 20, "bold")
# 출력할 텍스트 라인과 폰트
text_lines = [
f"총 {emission_co2}kg의 탄소배출량이 감소했어요!",
f"현재까지 '{footprint_co2}' 만큼의 탄소발자국을 줄였어요!",
"Thank you for your doing"
]
text_font = ("NanumGothic", 14)
# Tkinter 창 생성
root = tk.Tk()
root.title("G-SOK Map")
# 최상단 텍스트 라벨 추가
top_text_label = tk.Label(root, text=top_text, font=top_text_font)
top_text_label.pack(pady=10)
# 이미지를 로드하고 표시
img = Image.open(image_path)
img = img.resize((600, 500),Image.Resampling.LANCZOS)
# Image.Resampling.LANCZOS : 이미지 리사이즈시 화질 저하를 완화해주는 코드 // pillow 10.0.0 버전 이후 함수명 바뀜
img = ImageTk.PhotoImage(img)
panel = tk.Label(root, image=img)
panel.pack(side="top", fill="both", expand="yes")
# 텍스트 라벨 추가
for line in text_lines:
text_label = tk.Label(root, text=line, font=text_font)
text_label.pack()
# Tkinter 이벤트 루프 시작
root.mainloop()
# 이미지 폴더 경로
image_folder = "C:/ABCBootCamp/G_SOK_MAP_Project/ImgFolder"
Dp_Random_Img(image_folder)

오후
이동수단별 탄소배출량 계산
emissions_data = {
"S_Flight": {
"emission": 255.0,
"scope": "Scope 1",
"speed": 850
},
"L_Flight": {
"emission": 150.0,
"scope": "Scope 1",
"speed": 925
},
"Gasoline_Car": {
"emission": 192.0,
"scope": "Scope 1",
"speed": 57 # 고속도로와 일반도로 평균값의 평균
},
"Diesel_Car": {
"emission": 171.0,
"scope": "Scope 1",
"speed": 57
},
"Bus": {
"emission": 105.0,
"scope": "Scope 1",
"speed": 22
},
"Subway":{
"emission": 26.0,
"scope": "Scope 1",
"speed": 50
},
"Electric_Car": {
"emission": 53.0,
"scope": "Scope 2",
"speed": 46 # 출처 : https://www.wltpfacts.eu/from-nedc-to-wltp-change/
},
"Electric_Bicycle": {
"emission": 12.0,
"scope": "Scope 2",
"speed": 17 # 평균 15~20 km/h
},
"Train": {
"KTX": {
"emission": 19.92,
"scope": "Scope 2",
"speed": 180
},
"KTX_Sancheon_and_Mugunghwa": {
"emission": 38.105,
"scope": "Scope 2",
"speed": 120 # KTX 산천과 무궁화호의 평균속도
},
"Nuriro_and_ITX_Cheongchun_and_ITX_Saemaeul": {
"emission": 27.19,
"scope": "Scope 2",
"speed": 140 # 누리호, ITX 의 평균속도
}
}
}
class VehicleCo2:
def __init__(self,bus_time=0.0,subway_time=0.0,s_flight_time=0.0,l_flight_time=0.0,
gasoline_car_time=0.0,diesel_car_time=0.0,electric_car_time=0.0,
train_time=0.0,electric_bicycle_time=0.0 ):
self.bus_time = bus_time
self.subway_time = subway_time
self.s_flight_time = s_flight_time
self.l_flight_time = l_flight_time
self.gasoline_car_time = gasoline_car_time
self.diesel_car_time = diesel_car_time
self.train_time = train_time
self.electric_bicycle_time = electric_bicycle_time
self.electric_car_time = electric_car_time
self.Bool_trainUsed = False
self.emission_train = 0.0
self.emission_bus = self.bus_time / 60.0 * emissions_data["Bus"]["speed"] * emissions_data["Bus"]["emission"]
self.emission_subway = self.subway_time / 60.0 * emissions_data["Subway"]["speed"] * emissions_data["Subway"]["emission"]
self.emission_s_flight = self.s_flight_time / 60.0 * emissions_data["S_Flight"]["speed"] * emissions_data["S_Flight"]["emission"]
self.emission_l_flight = self.l_flight_time / 60.0 * emissions_data["L_Flight"]["speed"] * emissions_data["L_Flight"]["emission"]
self.emission_g_car = self.gasoline_car_time / 60.0 * emissions_data["Gasoline_Car"]["speed"] * emissions_data["Gasoline_Car"]["emission"]
self.emission_d_car = self.diesel_car_time / 60.0 * emissions_data["Diesel_Car"]["speed"] * emissions_data["Diesel_Car"]["emission"]
self.emission_elec_car = self.electric_car_time / 60.0 * emissions_data["Electric_Car"]["speed"] * emissions_data["Electric_Car"]["emission"]
self.emission_elec_bicycle = self.electric_bicycle_time / 60.0 * emissions_data["Electric_Bicycle"]["speed"] * emissions_data["Electric_Bicycle"]["emission"]
self.emissions_co2 = 0.0
# 초기화시에 각 이동수단별 시간을 가져온다
if self.train_time== 0.0:
self.Bool_trainUsed = False
else:
self.Bool_trainUsed = True
global emissions_data
def set_train_kind(self,using_train):
if self.train_time != 0.0:
# using_train = input("이용한 열차 : ")
match using_train:
case "1":
self.emission_train = self.train_time / 60.0 * emissions_data["Train"]["KTX"]["speed"] * emissions_data["Train"]["KTX"]["emission"]
case "2":
self.emission_train = self.train_time / 60.0 * emissions_data["Train"]["KTX_Sancheon_and_Mugunghwa"]["speed"] * emissions_data["Train"]["KTX_Sancheon_and_Mugunghwa"]["emission"]
case "3":
self.emission_train = self.train_time / 60.0 * emissions_data["Train"]["Nuriro_and_ITX_Cheongchun_and_ITX_Saemaeul"]["speed"] * emissions_data["Train"]["Nuriro_and_ITX_Cheongchun_and_ITX_Saemaeul"]["emission"]
case _:
self.emission_train = 0.0
print("잘못된 값을 입력하셨습니다, 열차시간은 계산에서 제외합니다")
else:
print("입력된 기차가 없습니다")
def calculate_co2(self):
# move_bus = (25.0/60.0 * emissions_data["Bus"]["speed"])*emissions_data["Bus"]["emission"]
self.emissions_co2 = (self.emission_bus + self.emission_subway + self.emission_s_flight +
self.emission_l_flight + self.emission_g_car + self.emission_d_car +
self.emission_elec_car + self.emission_elec_bicycle + self.emission_train)
return round(self.emissions_co2,2)
vehicle = VehicleCo2(train_time= 30,subway_time=50,electric_car_time=40)
vehicle.set_train_kind('3')
print(vehicle.calculate_co2()) # 4611.97'ABC 부트캠프' 카테고리의 다른 글
| [36일차] ABC 부트캠프 프로젝트 - 6 (0) | 2024.08.13 |
|---|---|
| [35일차] ABC 부트캠프 프로젝트 - 5 (0) | 2024.08.11 |
| [33일차] ABC 부트캠프 프로젝트 - 3 (0) | 2024.08.11 |
| [32일차] ABC 부트캠프 프로젝트 - 2 (0) | 2024.08.11 |
| [31일차] ABC 부트캠프 프로젝트 - 1 (0) | 2024.08.11 |