Python Project #1

Jisu Lee·2023년 2월 22일
0

Python 코드 모음집

목록 보기
1/1

야구장 좌석 추천 및 승률 계산 Python 프로젝트

#
# 야구장 좌석 추천 및 승률 계산 Python 프로젝트
#
print ("이 프로그램은 야구 관람이 서툰 분들을 위해 제작되었습니다.")
print ("여러분들에게 가장 적합한 좌석을 추천해드리며, 여러분들이 응원하는 팀이 승리할 확률을 구해줍니다.")

print ("먼저, 여러분들에게 가장 적합한 좌석을 추천해드리겠습니다.")


stadium_list = ( \
    (1,'잠실 야구장(두산)'), \
    (2,'잠실 야구장(엘지)'), \
    (3,'부산 사직 야구장'), \
    (4,'인천 SK 행복 드림 구장'), \
    (5,'창원 NC 파크'), \
    (6,'광주 챔피언스 필드'), \
    (7,'고척 스카이돔'), \
    (8,'삼성 라이온즈 파크'), \
    (9,'한화 생명 이글스 파크'), \
    (10,'수원 KT 위즈 파크') \
    )

seat_q_list = ( \
    (1, "당신은 치어리더와 함께 응원 열기를 즐기면서 경기를 관람하고 싶나요?", 6,5,2,4,1,3 ), \
    (2, "당신은 넓은 시야에서 전체적으로 야구 경기를 관람하고 싶나요?", 2,3,6,1,5,4 ), \
    (3, "내야 수비진과 투수진들을 가까이에서 보고 싶나요?", 4,6,2,5,1,3), \
    (4, "편하게 음식을 먹으면서 경기를 관람하고 싶나요?", 1,4,4,2,4,6), \
    (5, "직접 선수들과 함께 경기를 뛰는 느낌을 체험하고 싶나요?", 5,4,2,6,3,1), \
    (6, "외야 수비진들을 가까이에서 보고 싶나요?", 3,5,1,2,6,4) \
    )
 
#
# 구장 선택
#
for stad_id, stad_name in stadium_list :
    print(f'({stad_id}) {stad_name}')
    
ans = input ("오늘 방문하는 구장이 어디인가요 (1~10)?")
print(ans)

#
# 선택한 구장 출력
#
for stad_id, stad_name in stadium_list :
    # print(f'{ans} {stad_id} {stad_name}')
    if str(ans) == str(stad_id) :
        print(f'{stad_name}')
        break
# stad_id
# stad_name

#
# 선호 좌석 유형 질문
#
cheer = 0.1
ilban = 0.2
center = 0.3
exciting = 0.4
outside = 0.5
table = 0.6

for q_id, q_seat, s1,s2,s3,s4,s5,s6 in seat_q_list :
    print(q_seat, end='(y/n)')
    ans = input(': ')
    if str(ans) == 'y' :
        cheer = cheer + s1
        ilban = ilban + s2
        center = center + s3
        exciting = exciting + s4
        outside = outside + s5
        table = table + s6
    elif str(ans) == 'n' :
        cheer = cheer - s1
        ilban = ilban - s2
        center = center - s3
        exciting = exciting - s4
        outside = outside - s5
        table = table - s6

#
# 각 구장마다 좌석이름
#
seat_name_list = ( \
    (1, "레드석", "블루석", "중앙네이비석", "익사이팅존", "외야자유석", "테이블석"), \
    (2, "레드석", "블루석", "중앙네이비석", "익사이팅존", "외야자유석", "테이블석"), \
    (3, "내야필드석", "내야상단석" , "중앙상단석", "익사이팅존", "외야자유석", "탁자석"), \
    (4, "응원지정석", "의자지정석" , "중앙일반석", "프렌들리존", "외야일반석&그린존", "탁자지정석"), \
    (5, "응원석", "내야지정석" , "필드,중앙테이블", "다이나믹존", "외야지정석", "테이블석"), \
    (6, "K5", "K7" , "중앙K3", "서프라이즈석", "외야석", "피크닉석,페이코석"), \
    (7, "버건디석", "다크버건디석" , "중앙지정석", "로얄다이아몬드클럽", "외야(비)지정석", "테이블석"), \
    (8, "블루존", "내야지정석" , "중앙스카이지정석", "익사이팅석", "외야석", "테이블석"), \
    (9, "내야응원단석", "내야지정석" , "한화다이렉트,페이코존", "익사이팅존", "외야지정석", "탁자석"), \
    (10, "내야지정석(응원석)", "내야지정석(일반관람석)" , "스카이존", "익사이팅석", "외야자유석", "테이블석") \
    )

for stad_i, cheer_seat, ilban_seat, center_seat, exciting_seat, outside_seat, table_seat in seat_name_list :
    if stad_id == stad_i :
        break

#
# key 값이 동일하면 앞에 정의한 것이 지워져서
# 제일 처음 각 변수의 초기값을 소숫점에서 다르게 정했음.
#
dlist = { \
    cheer : cheer_seat, \
    ilban : ilban_seat, \
    center : center_seat, \
    exciting : exciting_seat, \
    outside : outside_seat, \
    table : table_seat \
    }    
dlist.keys()
dlist_keys = list(dlist.keys())
dlist_keys.sort(reverse=True)

print("당신에게 가장 적합한 좌석은 다음 순서와 같습니다. : \n", list(dlist.values()))

#
# 응원팀 승리확률(보너스)
#

import random

print('\n이번에는랜덤으로 질문을 뽑아 오늘 당신이 응원하는 팀이 승리할 확률을 구해드리겠습니다. y 또는 n로 대답해주세요.\n')

team = input ("당신이 가장 응원하는 팀은 어디인가요?")

q_all_list = ( \
    (f'{team}의 상대팀에 대한 승률이 6할 이상입니까?','y',30,'n',5), \
    (f'{team}의 선발투수가 지난 시즌 10승 이상을 기록하고 있습니까?','y',30,'n',5), \
    (f'{team}의 4번 타자 시즌 장타율이 5할 이상입니까?','y',20,'n',5), \
    (f'{team}의 9번 타자 시즌 타율이 2할 이상입니까?','y',30,'n',10), \
    (f'{team}의 1번타자의 시즌 출루율이 3할 6푼 이상입니까?','y',40,'n',5), \
    (f'{team}의 포수의 시즌 도루저지율이 2할 5푼 이상입니까?','y',60,'n',10), \
    (f'{team}의 외야수 세 명의 수비율이 모두 9할 8푼 이상입니까?','y',5,'n',0), \
    (f'{team}의 내야수 네 명의 수비율이 모두 9할 5푼 이상입니까?','y',30,'n',5), \
    (f'{team}의 선발투수의 평균자책점이 3점 이하입니까?','y',20,'n',10), \
    (f'{team}의 선발투수 시즌 승률/ 지난 시즌 승률이 7할 5푼 이상입니까?','y',50,'n',10), \
    (f'{team}의 선발투수의 지난 시즌 WAR이 3.5 이상입니까?','y',40,'n',20), \
    (f'{team}의 5회까지 팀 실책이 하나 이상입니까?','y',40,'n',10), \
    (f'{team}의 안타율이 지난 시즌 평균 이상입니까?','y',30,'n',10), \
    (f'{team}의 장타율이 지난 시즌 평균 이상입니까?','y',50,'n',10), \
    (f'{team}의 중간 계투진의 피안타율이 모두 2할 이하입니까?','y',20,'n',5), \
    (f'{team}의 중간 계투진의 평균 자책점이 모두 5.5점 이하입니까?','y',20,'n',5), \
    (f'{team}의 2번 타자의 OPS가 8할 5푼 이상입니까?','y',50,'n',10), \
    (f'{team}의 3번 타자의 OPS가 8할 5푼 이상입니까?','y',30,'n',0), \
    (f'{team}의 4번 타자의 지난 시즌 홈런 개수가 20개 이상입니까?','y',40,'n',20), \
    (f'{team}의 지명타자의 지난 시즌 안타 개수가 160개 이상입니까?','y',20,'n',5), \
    )
q_list = random.sample(q_all_list, 12)




total_score = 0
my_score = 0
for q, a, w, a2, w2 in q_list :
    q_colon = q + ' : '
    my_ans = input(q_colon)
    if w < w2 :
        total_score = total_score + w2
    else :
        total_score = total_score + w
    if my_ans == a :
        my_score = my_score + w
    elif my_ans == a2 :
        my_score = my_score + w2
print('Total score = ', total_score)
print('My score = ', my_score)
percentage = round(my_score * 100)/total_score
print(f'오늘 {team}이/가 승리할 확률은 ',percentage,'입니다')

0개의 댓글