본문 바로가기
학부생나부랭이/_with_Python

Replacing the main language with Python (2)

by 호상 🐧 2022. 11. 2.

공부가 하기 싫어서 진짜 간단하게 짜본 롤 5:5 팀짜기 🦍

일단 파이썬에서 지원하는 random 을 import 해준다. 이는 랜덤으로 팀을 섞기 위함이다.

 

그리고 사람 이름이 담긴 txt 파일을 load 한다.  이는 아래와 같다.

그 다음 각 라인을 담은 list 를 생성한다.

 

롤은 블루팀, 레드팀으로 나뉘고 각 탑,정글,미드,원딜,서폿으로 라인이 정해져 있다. 따라서 이를 모두 선언해준다.

 

다음으로 random 으로 indexing 을 해준다. for loop를 사용하여 순서를 random.randint 를 사용하여 random 으로 0~9까지의 수를 넣어준다. 그리고 order 가 team_index 에 존재한다면 다른 수를 넣어야 하기 때문에 while 문을 통해서 유무를 판별한다. 있다면 없을때 team_index 에 없을 때까지 random 값을 설정한다. while 문을 빠져 나온다면 team_index 에 append 해준다. 

 

list 에서 append 를 한다면 list 의 마지막에 삽입을 해준다. 삽입 구조는 스택과 유사한 과정을 나타낸다. -> (후입) 

 

랜덤인 수가 삽입된 team_index list 를 가지고 각각을 접근하며 team_rand_line list 를 통해 team_line 을 random으로 삽입해준다.

 

마지막으로 랜덤으로 짜여진 line 에 대해 load 한 name 데이터를 test list에 같이 삽입해준다. 그 후 보기 좋으라고 정렬을 해준다. 이는 원하는 정렬은 아니지만 귀찮기 때문에 그냥 sort() 함수를 사용한다.

 

마무리로 test list 를 출력하면 완료이다. output 을 확인해 보자.

 

 

6번 출력해보았는데 모두 적절히 섞이는 것을 확인 할 수 있었다. 또한 red_team / blue_team 모두 적절히 섞이는 것 역시 확인 할 수 있었다.

 

 

 

전체 코드 😊

import random

if __name__ == '__main__':

    #file load
    file_path = './member.txt'
    with open(file_path, 'r',encoding='UTF-8') as f:
        name = f.read().splitlines()

    #line list
    team_line = ['blue top','blue jg','blue mid','blue ad','blue sup',
                 'red top', 'red jg', 'red mid', 'red ad', 'red sup']

    #random index set
    team_index = []
    for i in range(10):
        order = random.randint(0,9)
        while order in team_index:
            order = random.randint(0,9)
        team_index.append(order)

    #random team line list
    team_rand_line = []
    for k in team_index:
        team_rand_line.append(team_line[k])

    test = []
    #team set
    for j in team_index:
         test.append("%s  %s" % (team_rand_line[j], name[j]))
    test.sort()
    for v in range(0,10):
        print(test[v])

 

평가 🔦

그냥 공부가 하기 싫어서 짜본거긴 한데 적당히 잘 나온것 같다. 그리고 코딩하면서 즐겁게 코드친거는 오랜만이다 정말로.

아쉬운 점이 있다면 롤 라인은 탑, 정글, 미드, 원딜, 서폿 순으로 출력하지 않은점. GUI 까지 짜진 않은점. 등등 인 것 같다.

파이썬은 Tkinter 라는 GUI 를 지원하는데 한번 해볼까? 하고 짧게 코드를 치다가 내가 front 를 때려친 이유를 상기시켜주는 좋은 계기가 되었다. 그리고 너무 하드코딩 한건 아닌가 싶은 생각도 든다. 그래도 재밌게 코딩한 것 같다.

 

본 코딩을 하면서 알게 된 점은 파이썬에서 list 의 append 는 후입이라는 점이다. 이건 정말 몰랐다. 그리고 확실히 C언어나 java 보다 언어가 쉽다는 점이다. 재밌는 언어다 정말.

 

뭐 언젠가 친구들과 내전할때 사용하지 않을까 ?? ㅎㅎ

댓글