이 문제를 해결하려면 웹에서 데이터를 가져올 수 있는 requests 모듈이 필요합니다. requests는 Python의 대표적인 HTTP 라이브러리로, URL에 요청을 보내고 응답을 손쉽게 다룰 수 있게 해줍니다.
requests 모듈 설치
모듈이 설치되어 있지 않다면 명령줄(터미널 또는 CMD)에서 아래 명령어를 실행하여 설치합니다.
pip install requests
1단계: 웹 스크래핑(Scraping)
웹에서 단어 목록을 가져오는 절차는 다음과 같습니다.
- requests 모듈을 임포트합니다.
- 대상 URL에서 데이터를 요청(fetch)합니다.
- 응답받은 바이트 데이터를 UTF-8로 디코딩합니다.
- 디코딩된 문자열을 공백 기준으로 분리해 단어 리스트로 변환합니다.
2단계: 정렬된 단어 찾기(Ordered Finding)
가져온 단어들 중에서 알파벳 순서(ASCII 값 기준)대로 배열된 단어를 찾는 방법입니다.
- 반복문을 사용해 단어 리스트를 순회(traverse)합니다.
- 각 단어에서 인접한 두 문자의 ASCII 값을 비교합니다.
- 앞 문자의 ASCII 값이 항상 뒤 문자보다 작거나 같으면 '정렬됨(ordered)'으로 판정하고 출력하고, 그렇지 않으면 '정렬되지 않음(not ordered)'으로 처리합니다.
전체 예제 코드
import requests
def Words_find():
my_url = "" # 웹사이트에 있는 .txt 파일의 URL을 입력하세요
my_fetchData = requests.get(my_url)
my_wordList = my_fetchData.content
my_wordList = my_wordList.decode("utf-8").split()
return my_wordList
def wordordered():
collection = Words_find()
collection = collection[16:] # 파일 머리글(header) 부분 제외
for my_word in collection:
result = 'ordered'
i = 0
l = len(my_word) - 1
if len(my_word) < 3:
continue
while i < l:
if ord(my_word[i]) > ord(my_word[i + 1]):
result = 'not ordered'
break
else:
i += 1
if result == 'ordered':
print(my_word, ':', result)
if __name__ == '__main__':
wordordered()코드 설명
Words_find() 함수
URL에서 .txt 파일을 내려받아 UTF-8로 디코딩한 뒤, split()으로 공백 단위로 나누어 단어 리스트를 반환합니다. 이때 collection[16:]처럼 슬라이싱을 사용하면 파일 상단의 불필요한 머리글 행을 건너뛸 수 있습니다.
wordordered() 함수
각 단어에 대해 인접 문자의 ASCII 값을 ord() 함수로 비교합니다. 길이가 3 미만인 단어는 의미가 적으므로 continue로 건너뛰고, 중간에 한 번이라도 앞 문자가 뒤 문자보다 크면 즉시 'not ordered'로 판정하고 반복을 종료(break)합니다. 최종적으로 'ordered'로 판정된 단어만 화면에 출력합니다.
참고 사항
- 실제 동작을 확인하려면 유효한 .txt 사전 파일 URL(예: 온라인 영어 단어 목록)을
my_url에 지정해야 합니다. - 네트워크 오류에 대비하려면
try-except문> 블록으로 예외 처리를 추가하는 것이 좋습니다. - 대용량 파일의 경우 제너레이터나 스트림 방식으로 처리하면 메모리 사용량을 줄일 수 있습니다.