파이썬/파이썬(python) 초급

[14-1 파이썬] 비교 게임 만들기(코딩하는 순서, 방법)

Olivia-BlackCherry 2022. 8. 21. 18:15

"사과"라는 주제로 글짓기를 한다면

10명이면 10명 모두, 

글의 내용이 다르다. 

 

이번엔 수학 문제를 생각해보자.

문제: 10개의 사과가 있었는데, 이 중에서 7개를 먹고, 2개는 썪어서 버렸으며

근처 과일가게에 가서 3개 묶음 짜리 사과 2개를 더 사왔다면, 

총 사과의 개수는 몇 개일까?

 

이 문제를 구하는 방식은

좀 전의 글짓기와는 달리,

10명이라면 7~8명 정도는 같은 방식으로 풀었을 확률이 높다. 

그렇다고 모두가 똑같은 방식으로 풀지도 않는다. 

 

결국

글짓기도, 수학도

문제에 대한 해결방법이 하나만 있지 않다.

대신, 좀 더 효율적인 방법이 있을 뿐이다.

 

 

필자는 코딩언어와 수학복합체라고 생각한다.

그래서 

해결 방법이 하나만 있는 것은 아니지만,

수학문제처럼 일반적인 풀이는 존재할 수 있다고 생각한다. 

 

초보일 수록, 경험이 적을 수록

코딩 과정이 어설플 수도 있고, 

더 복잡하게 적어낼 수도 있다.

 

하지만 경험이 쌓이고 쌓일 수록 문장은 더 효율적이고 간결해질 것이다. 

 

그러니, 우리가 할 일은

매일 코딩을 연습하는 것!

 

 

그렇다면 어떻게, 어떤 순서로, 어떤 방법으로 코딩할까?

내가 배운 것을 소개하겠다.

 

 

필자가 코딩하는 과정은 다음과 같다.

1. 알고리즘 구상하기

2. 순서도 만들기

3. 세분화하기: 엄청나게 복잡한 문제라도 작게 세분하여 문제에 접근한다.

4. 코드 작성하기: 쉬운 것부터 어려운 것 순으로 접근한다.

5. 코드 실행하기

6. 코드 수정하기

7. 코드 합치기

 

예시와 함께 나열해보겠다.

1. 알고리즘 구상하기
2. 순서도 만들기

 

 

 

 3. 세분화하기: 엄청나게 복잡한 문제라도 작게 세분하여 문제에 접근한다.
#대상자 선택하기

# 정보 말해주기

# 정답 선택하기

 

 

4. 코드 작성하기: 쉬운 것부터 어려운 것 순으로 접근한다.
5. 코드 실행하기
6. 코드 수정하기


 

 

7. 코드 합치기

data = [
    {
        'name': 'Instagram',
        'follower_count': 346,
        'description': 'Social media platform',
        'country': 'United States'
    },
    {
        'name': 'Cristiano Ronaldo',
        'follower_count': 215,
        'description': 'Footballer',
        'country': 'Portugal'
    },
    {
        'name': 'Ariana Grande',
        'follower_count': 183,
        'description': 'Musician and actress',
        'country': 'United States'
    },
    {
        'name': 'Dwayne Johnson',
        'follower_count': 181,
        'description': 'Actor and professional wrestler',
        'country': 'United States'
    },]
#최종 완성본

print("""
 ,adPPYb,d8 ,adPPYYba, 88,dPYba,,adPYba,   ,adPPYba, ,adPPYba,  
a8"    `Y88 ""     `Y8 88P'   "88"    "8a a8P_____88 I8[    ""  
8b       88 ,adPPPPP88 88      88      88 8PP"""""""  `"Y8ba,   
"8a,   ,d88 88,    ,88 88      88      88 "8b,   ,aa aa    ]8I  
 `"YbbdP"Y8 `"8bbdP"Y8 88      88      88  `"Ybbd8"' `"YbbdP"'  
 aa,    ,88                                                     
  "Y8bbdP"                                                      
  """)


#대상자 선택하기
import random
compare_list =[]
def first_compare_list(data):
  new = random.choice(data)
  #data.remove(new) #중복되어 뽑지 않도록 지울 수도 있다.
  #print(new)
  compare_list.append(new)
  return compare_list[0]

def second_compare_list(data):
  new = random.choice(data)
  #data.remove(new)
  #print(new)
  compare_list.append(new)
  return compare_list[-1]

a = first_compare_list(data)
b = second_compare_list(data)

# print(compare_list)
# print(a)
# print(b)


# 정보 말해주기
def inform(a):
  information = []
  for key in a:
    information.append(a[key])

  return f"{information[0]}, {information[2]}, {information[3]} 입니다."



# 정답 선택하기
def decision(a, b):
  score = 0
  while True:
    print("대상자 a의 정보는", inform(a))
    print("VS")
    print("대상자 b의 정보는", inform(b))
    answer = input("누가 인스타팔로워가 더 많을까요? a 또는 b를 입력하세요.")
    if answer == "a":
      if a['follower_count'] > b['follower_count']:
        score += 1
        print(f"정답입니다. 현재 점수는 {score}입니다")
        a = b
        b = second_compare_list(data)
        #print(compare_list)
      elif a['follower_count'] == b['follower_count']:
        print("똑같네요! 다음으로 넘어가겠습니다")
        a = b
        b = second_compare_list(data)
      else:
        print(f"틀렸습니다. 최종 점수는 {score}점입니다")
        return
    else:
      if b['follower_count'] > a['follower_count']:
        score += 1
        print(f"정답입니다. 현재 점수는 {score}입니다")
        a = b
        b = second_compare_list(data)
        print(compare_list)
      elif a['follower_count'] == b['follower_count']:
        print("똑같네요! 다음으로 넘어가겠습니다")
        a = b
        b = second_compare_list(data)
      else:
        print(f"틀렸습니다. 최종 점수는 {score}점입니다")
        return


decision(a,b)
# 실제 정답 I>C>A>D

 

최종 결과물입니다.

아래의 재생버튼 ▶을 눌러서 최종 결과를 실행해보세요