파이썬 24

[Code Solution] 여러 파일에 대하여 작업 수행하기

여러 파일에 대하여 작업 수행하기 작업을 수행하는데 있어서 1개의 파일에 대해서만 작동하는 경우도 있지만, 여러 파일에 대하여 동일한 작업을 수행해야하는 경우도 있습니다. 작업을 수행해야하는 파일의 개수가 작을 때는 파일명을 일일이 쳐서 수행을 할 수 있지만, 파일의 개수가 많은 경우에는 파일명을 일일이 치기에는 힘이 듭니다. 이러한 경우에는 glob 라이브러리에서 제공하는 glob() 함수를 사용하면 손쉽게 모든 파일에 대하여 작업을 수행해줄 수 있습니다. glob() 함수 안에 작업을 수행해야하는 파일이 들어있는 경로를 입력해주면 파일의 이름 및 경로가 리스트 형식으로 반환됩니다. 이렇게 반환된 리스트를 이용한다면 작업을 손쉽게 수행할 수 있습니다. import pandas as pd import g..

[Code Solution] 폴더(디렉토리) 생성하기

폴더(디렉토리) 생성하기 os 라이브러리에서 제공하는 함수를 사용하여 폴더(디렉토리)를 생성해보겠습니다. os 라이브러리는 파이썬에 기본적으로 내장되어 있는 라이브러리로, 폴더 생성, 파일 유무 확인등 다양한 함수를 제공하고 있습니다. os 라이브러리에서 폴더(디렉토리)를 생성하는데 사용되는 함수는 크게 2가지가 있습니다. mkdir() 함수는 내부에 입력된 경로로 들어가서 1개의 폴더를 생성하는 함수이고, makedirs() 함수도 마찬가지로 입력된 경로의 모든 폴더를 생성하는 함수입니다. 좀더 간단하게 예를 들어보겠습니다. mkdir("./new_folder_A")를 실행시킨다면 폴더가 정상적으로 생성될 것입니다. 하지만 만약 new_folder_A가 없는 상태에서 mkdir("./new_folder..

[Code Solution] 올림, 내림, 반올림 하기

올림, 내림, 반올림 하기 파이썬에 내장된 round() 함수는 2개의 인자를 받아서, 소수 몇째 자리에서 반올림을 할지를 결정해줄 수 있습니다. 하지만, math 라이브러리에서 제공하는 ceil(), floor() 함수는 무조건 소수 첫째 자리에서 올림 혹은 내림을 해줍니다. 따라서, round() 함수와 같이 2개의 인자를 받아서, 소수 몇째 자리에서 올림 혹은 내림을 해줄지 결정할 수 있는 사용자 정의 함수를 구현해 보았습니다. import math # 올림 def myCeil(number, ndigits): number = number * math.pow(10, ndigits) number = math.ceil(number) number = float(number) / math.pow(10, nd..

[Code Solution] 연속된 숫자들로 이루어진 부분 리스트 찾기

연속된 숫자들로 이루어진 부분 리스트 찾기 list = [2, 3, 4, 5, 6, 7, 10, 11, 12, 15, 16, 17, 21, 22, 30, 31, 32, 33, 34] continuous_values_lists = [] current_continuous_values = [] value = list.pop(0) current_continuous_values.append(value) while(len(list) > 0): next_value = list.pop(0) if value+1 == next_value: current_continuous_values.append(next_value) value = next_value else: continuous_values_lists.append(cu..

[Multi-Agent Search_5] Evaluation Function (1)

※ 이 글은 "UC Berkeley CS188 Intro to AI"의 "Project 2: Multi-Agent Search"을 해결하는 과정을 정리한 글입니다. Evaluation Function Pacman을 위하여 betterEvaluationFunction에 더 좋은 평가 함수를 구현해 보십시오. 이번에 구현해야 하는 평가 함수는 Reflex Agent의 평가 함수처럼 Action을 평가하는 것이 아닌 State를 평가해야 할 것입니다. 코드를 구현하기 위하여 과제의 탐색 코드를 포함한 어떠한 도구도 사용 가능합니다. 1개의 유령이 포함되어 있는 smallClassic 게임에서 깊이가 2인 탐색 코드를 사용하여 구현된 평가 함수는 전체 소요 시간의 절반 이상을 Pacman이 적당한 스피드로 움직..

[Multi-Agent Search_4] Expectimax (1)

※ 이 글은 "UC Berkeley CS188 Intro to AI"의 "Project 2: Multi-Agent Search"을 해결하는 과정을 정리한 글입니다. Expectimax Minimax와 Alpha-Beta Pruning은 훌륭한 알고리즘이지만, 두 알고리즘은 모두 최적의 결정을 하고 있는 적과 게임을 하고 있다고 가정하고 있습니다. 하지만 모든 적들이 항상 최적의 결정을 하는 것은 아닙니다. 이번 과제에서는 Pacman이 최선이 아닌 차선의 방법을 선택할 수 있는 확률론적 행동을 할 수 있게 도와주는 ExpectimaxAgent를 구현해볼 것입니다. 지금까지 여러 과제를 통하여 구현해왔던 다른 탐색 알고리즘과 같이 이번 알고리즘의 장점 또한 일반적으로 다양한 곳에 적용 가능하다는 점입니다...

[Multi-Agent Search_3] Alpha-Beta Pruning (1)

※ 이 글은 "UC Berkeley CS188 Intro to AI"의 "Project 2: Multi-Agent Search"을 해결하는 과정을 정리한 글입니다. Alpha-Beta Pruning AlphaBetaAgent에서 minimax 트리를 조금 더 효율적으로 탐사하기 위해서 alpha-beta pruning를 구현하십시오. 이전과 마찬가지로 알고리즘은 아래의 수도 코드보다 조금 더 일반화가 되어야 할 것이며, 여러 minimize agent들에게 alpha-beta pruning을 적절하게 확장시켜야 할 것입니다. 코드를 잘 구현하였다면 깊이가 3인 alpha-beta pruning 알고리즘이 깊이가 2인 minimax보다 빠른것을 확인할 수 있을 것입니다. 이론적으로는 깊이가 3인 small..

반응형