작성
·
14
0
아래와 같은 파이썬 과제를 받았는데 여러번 해봐도 잘안되서 질문 드립니다. 도와주시면 감사하겠습니다.
과제:
다음과 같은 유니코드 문자 목록과 2차원 그리드 내 위치를 포함하는 Google 문서가 주어집니다.
과제는 해당 Google 문서의 URL을 인수로 받아 문서 내 데이터를 가져와 파싱한 후 문자 그리드를 출력하는 함수를 작성하는 것입니다. 고정폭 글꼴로 출력될 때 그리드의 문자들은 대문자 순서로 구성된 그래픽을 형성하며, 이것이 비밀 메시지입니다.
문서는 격자 내 유니코드 문자 및 각 문자의 x, y 좌표를 명시합니다.
좌표의 최소값은 0입니다. 최대값은 없으므로 격자는 최대한도도 없습니다.
지정된 문자가 없는 격자 위치는 공백 문자로 채워야 합니다.
문서는 항상 위 링크된 예시 문서와 동일한 형식을 유지한다고 가정해도 됩니다.
예를 들어, 위 링크된 단순화된 예시 문서는 문자 'F'를 그립니다:
좌표 (0, 0)은 이 예시에서와 같이 항상 그리드의 동일한 모서리에 해당하므로, x좌표와 y좌표가 어느 방향으로 증가하는지 반드시 이해해야 합니다.
코드는 Python으로 작성되어야 합니다.
외부 라이브러리 사용이 허용됩니다.
헬퍼 함수를 작성할 수 있으나, 다음 조건을 충족하는 함수 하나를 반드시 포함해야 합니다:
1. 입력값으로 Google 문서의 URL이 포함된 문자열을 하나의 인자로 받습니다.
2. 호출 시 입력 데이터로 지정된 문자 격자를 출력하여 올바른 방향의 대문자로 구성된 그래픽을 표시합니다.
- 끝-
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
수워니님께서 주신 파이썬 과제에 도움을 드리겠습니다.
이 과제를 해결하기 위해 Python 스크립트를 작성할 수 있습니다. Google 문서의 내용을 가져와 파싱하고, 대문자 순서로 문자 그리드를 출력하는 기능이 필요합니다. 아래는 기본적인 접근 방식을 보여주는 예시 코드입니다:
import requests
def fetch_and_parse_doc(url):
# Google 문서에서 텍스트 데이터 가져오기
response = requests.get(url)
content = response.text
# 데이터를 라인별로 분리
lines = content.splitlines()
# 그리드와 좌표 데이터 초기화
grid_data = []
max_x, max_y = 0, 0
# 각 라인을 처리하여 문자와 좌표를 수집
for line in lines:
# 각 라인은 '문자 x,y' 형식으로 이루어져 있다고 가정
parts = line.split(',')
if len(parts) < 2:
continue
char = parts[0].split(' ')[-1]
x = int(parts[0].split(' ')[0])
y = int(parts[1].strip())
max_x, max_y = max(max_x, x), max(max_y, y)
grid_data.append((char, x, y))
# 그리드 생성 및 초기화(모든 위치에 공백 문자 설정)
grid = [[' ' for _ in range(max_x + 1)] for _ in range(max_y + 1)]
# 그리드에 문자 배치
for char, x, y in grid_data:
grid[y][x] = char
# 그리드 출력
for row in grid:
print(''.join(row))
# 호출 예시
fetch_and_parse_doc("https://docs.google.com/document/d/e/2PACX-1vTMOmshQe8YvaRXi6gEPKKlsC6UpFJSMAk4mQjLm_u1gmHdVVTaeh7nBNFBRlui0sTZ-snGwZM4DBCT/pub")
위 코드는 Google 문서에서 텍스트를 가져온 후 각 라인을 파싱하여 문자와 좌표를 식별하고, 이를 2차원 그리드에 배치하여 출력합니다. 외부 라이브러리인 requests
를 사용해 웹 페이지의 내용을 가져오는 부분에 주의하시기 바랍니다. 라이브러리를 설치하지 않으셨다면, pip install requests
로 설치해 주세요.
필요한 경우 더 구체적인 요구 사항에 맞게 데이터를 파싱하는 방식을 조정할 수 있습니다. 추가적인 도움이 필요하다면 언제든지 말씀해 주세요!