PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2021/09/26 11:34:55
Name 삭제됨
Subject [삭제예정] 부끄럽지만 파이썬 관련해서 도움 주실 분을 찾고 있습니다.
작성자가 본문을 삭제한 글입니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
21/09/26 12:32
수정 아이콘
1번문제는 print(trump_tweet(text)) 위치가 문제입니다
t = input()
trump_tweet(t) 아래로 내려두사면 해결될거에요
print(trump_tweet(t)) <- t 로 이름통일
21/09/26 12:34
수정 아이콘
2번문제는 split을 , 아니라 / 해야되지않을까요?
21/09/26 12:42
수정 아이콘
result = []
for result in corpus : <---- result 이름도 바꾸셔야할거에요
if word.startswith(text):
result.append(text)
21/09/26 13:02
수정 아이콘
답변 감사합니다. for result2 in corpus로 변경하였는데
if word.startswith(text):
result.append(text)
의 괄호 안에 text가 들어가는게 맞는가라는 의문이.. 들기 시작하네요 ㅠㅠ
여전히 result2로 바꾸어도 코드가 정상 실행이 되진 않습니다 흑흐규흐..
21/09/26 13:04
수정 아이콘
(수정됨) for result2 in corpus :
if result2.startswith('text'):
result.append(result2)
요게 맞을거에요
21/09/26 13:08
수정 아이콘
(수정됨) result = {}
for result2 in corpus:
print(result2)
if result2.startswith('text'):
if result2 in result:
result[result2] +=1
else:
result[result2] =1

return [ i[0] for i in sorted(result.items(), key=(lambda x:x[1]), reverse=True)][:20]

요렇게 한번해보세요
21/09/26 13:44
수정 아이콘
ㅜㅜ 여전히 작동하지가 않네요.. 너무 어렵습니다 흑흑.... 답변 정말 감사드립니다!
21/09/26 13:46
수정 아이콘
제가 corpus 에 예시넣고했을땐 잘됐는데 안되는거시면 아마 위에 text파일 파싱이문제인데
제가 text 파일이 없어서 도움을드릴수가없네요. .혹시 도움필요하시면 쪽지주세요
5문제다 어려운건 아니라 도움드릴순있습니다
21/09/26 14:41
수정 아이콘
정말 감사합니다. 선생님.. corpus.txt 텍스트 파일은
zoo/881
zones/1827
yellow/5712
.
.
이런 식으로 한줄씩 영어단어/빈도수 형태로 저장되어 있습니다.
21/09/26 15:01
수정 아이콘
이미 빈도수를뽑으셨네요 그러면 뽑을때부터 dictionary로 뽑아도되고 tuple로 정렬하셔도됩니다
변수설정만 잘하시면되실듯해요
21/09/26 14:15
수정 아이콘
(수정됨) 파일을 열어보거나 할 수 있는 상황이 아니어서
본문에 올려주신 1~2번 문제 중에서 문제가 되는 부분만 찝어볼게요.

(1)
for result in corpus:
-> 여기에서 [result]는 이 라인 이후의 for 블록에서 사용할 변수명을 정의하는건데, result를 위에서 이미 정하셔서 오류가 있을 것 같네요.
for문 블록에서 사용할 corpus의 요소에 해당하는 변수명은 다른걸로 설정해보세요. ex) for tuple in corpus:

(2)
if word.startswith(text):
-> word가 정의되지 않았네요. 이 word가 위에서 corpus 배열 안에 있는 튜플의 첫번째 요소를 말하는거라면 word를 정의한 후에 해보세요.
ex)
word = tuple[0]
if word.startswith(text):

(3)
with open(text) as file:
  for line in file:
-> 문제에 적혀있듯이 'corpus.txt'파일을 불러와야하는데, 이 함수에서 "filter_by_text(t)"를 통해 가져온 'text'는 문제에서 말하는 'text변수'를 말하는 것 같아요.
이건 단순한 변수인데 파일로 취급하고 한줄씩 불러오려고하니까 제대로 동작하지 않는 것 같아요. 아래와 같이 바꾸셔야할듯.

ex)
with open("corpus.txt파일의 경로") as file:
  for line in file:

(4)
split = line.split(',')
-> 슬래시로 구분되어있다고 하니, 콤마가 아니라 슬래시로 split을 하셔야할것 같네요.

(5) 지정된 형식으로 출력을 기능하는 함수를 만들으라했으니, print는 함수 안에서 해야하지 않을까 싶어요.

프로그램이 실행되는 순서로 보면
(1) print(trump_tweet(text)) -> (2) t=input() -> (3) filter_by_text함수 호출 -> (4) 함수 내의 내용들이 실행됨
이런 순서이기때문에,
[X]
def trump_tweet(text):
  # (여러가지 일거리)
print(trump_tweet(text)) # 컴퓨터는 여기서 말하는 text가 뭔지 모름. 따라서 이 함수는 제대로 실행되지 않음
t = input() # 문제풀이 프로그램이 t에 text변수를 인풋
filter_by_text(t) # 변수가 제대로 들어온 t를 인수로 filter_by_text가 제대로 호출되지만, 함수 안에는 출력이 없으므로 값 반환만 되고 출력 없이 프로그램 종료.

[O]
def trump_tweet(text):
  # (여러가지 일거리)
  result = 여러가지 일거리 최종 결과를 출력 형식에 맞게 정의
  print(result)

t = input() # 문제풀이 프로그램이 t에 text변수를 인풋
filter_by_text(t) # 제대로 호출됨. 함수 안에 마지막에 print함수도 호출되므로 결과가 제대로 출력됨.

----
대부분 간과하신 부분이 변수가 프로그램 안에서 살아있는 수명?부분인 것 같은데,
"word랑 freq는 첫 반복문 안에서만 살아있던 거니까, 다른 반복문 블록에서 word를 다시 쓰고싶을땐 word를 다시 정의해야겠구나." 라거나,
"함수 정의 블록(def function(): ~~)이 아닌 글로벌 영역에서 text가 정의되지 않았으니 print(trump_tweet(text))는 에러가 나겠구나. "
하는 부분을 생각해보시면서 풀어보시면 좀더 접근이 쉬워지지 않을까 합니다...! 화이팅입니다.
21/09/26 14:54
수정 아이콘
답변 정말 감사드립니다. 변수의 수명 부분을 말씀해주셨는데 그 부분을 많이 놓치고 있었던 것 같습니다!

def filter_by_text(text) :
# 주어진 규칙에 맞추어 filter_by_text()함수를 구현해주세요.
# corpus.txt에 있는 텍스트를 읽어와서 corpus라는 리스트에 추가한다.
corpus = []
with open('corpus.txt') as file:
for line in file:
split = line.split('/')
word = split[0]
freq = split[1]
new_tuple = (word, freq)
corpus.append(new_tuple)


# corpus에 있는 데이터 중, text로 시작하는 단어만을 추려서 result라는 리스트에 저장한다.
result = []
for result2 in corpus :
word = result2[0]
if word.startswith(text):
result.append(text)

# 찾은 영어 단어를 빈도수를 기준으로 내림차순으로 정렬하여 20개만 출력한다.
return sorted(corpus, key=itemgetter(1), reverse=True)[:20]


# 아래 부분은 수정하지 마세요!
# 입력과 출력을 수행하는 코드입니다.
t = input()
filter_by_text(t)

요렇게 수정을 해보았는데 아직 작동을 하지 않습니다 ㅜㅜ 함수 내에서 출력을 하라는 말씀이 return sorted~ 아래 부분에 동일한 들여쓰기로
작성해야 한다는 말씀이실까요? 그럴 때 print함수를 어떻게 적어야 할지 모르겠습니다. print(filter_by_text(text)) 요렇게인지 아닌지 ㅜㅜ

그리고
result = []
for result2 in corpus :
word = result2[0]
if word.startswith(text):
result.append(text)
요부분이 맞게 됐는지 궁금합니다.
마지막줄의 result.append(text)에서 괄호 안에 text가 맞나.. 싶긴 한데.. word의 인자?를 result에 넣어야 하니 word를 적어야 하나 싶기도 합니다 ㅠ
21/09/26 20:00
수정 아이콘
def trump_tweet(text):
hashtags = [w for w in text.split() if w.startswith('#')]
mentions = [w for w in text.split() if w.startswith('@')]
others = [w for w in text.split() if w[0] not in '#@']
text가 정확히 어떤 형태로 들어오는지도 모르고, 원하는 출력형태도 모르니 더 이상 뭘 할 수가 없습니다.

def filter_by_text(text):
with open('corpus.txt', 'r') as f:
corpus = [tuple(l.strip('\n').split('/')) for l in f]
result = [(w, int(count)) for w, count in corpus if w.startswith(text)]
print([(w, c) for w, c in sorted(result, key=lambda x: x[1])[::-1][:20]])
이것도 글에 스펙이 자세하게 적혀있지 않기 때문에, 돌아가는거 보면서 고쳐야 할 수 있습니다.
21/09/27 02:52
수정 아이콘
상세하고 친절한 답변 감사드립니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
158691 [삭제예정] 생명과학1 생식세포분열 문제 질문(삭제예정) [10] 메모장시인7917 21/10/04 7917
158688 [삭제예정] '혁'처럼 이름에 ㅕ 들어가시는 분 영어 발음 설명 [3] 휵스8886 21/10/04 8886
158671 [삭제예정] 부모님이랑 스시오마카세 가는데 가져갈 와인 추천 부탁드립니다. [13] 훈타8906 21/10/03 8906
158624 [삭제예정] 혹시 디아블로2 웨이좀 열어주실분 계신가요? [6] 쥬리7800 21/10/01 7800
158618 [삭제예정] 부부상담클리닉 추천 부탁드립니다. [8] 삭제됨9977 21/10/01 9977
158603 [삭제예정] 스벅 1+1 쿠폰 가져가실분있나요? [4] 핸드레이크10300 21/09/30 10300
158599 [삭제예정] 인터넷 해지 관련 문의 드립니다. [2] 삭제됨6927 21/09/30 6927
158595 [삭제예정] 와이파이 데이타 사용에 알수 없는 프로그램이 있습니다. [2] 삭제됨7278 21/09/30 7278
158560 [삭제예정] 피쟐에 NFT 하시는분? [10] 삭제됨9457 21/09/29 9457
158512 [삭제예정] (삭제예정)유머게시판 보고 질문 [11] 삭제됨8882 21/09/27 8882
158508 [삭제예정] 그래픽카드 수리관련 고민입니다. [7] 로트리버9000 21/09/27 9000
158507 [삭제예정] 삭제합니다. [20] 삭제됨8937 21/09/27 8937
158502 [삭제예정] 대출관련 질문입니다. [5] 삭제됨10383 21/09/27 10383
158488 [삭제예정] 아파트 가전제품 옵션 질문입니다. 지금 선택하면 추후 입주할 때 구형이 되어 손해일까요? [8] 삭제됨6744 21/09/26 6744
158470 [삭제예정] 부끄럽지만 파이썬 관련해서 도움 주실 분을 찾고 있습니다. [14] 삭제됨9816 21/09/26 9816
158468 [삭제예정] 윈도우 화면 깨짐 현상. [2] 삭제됨8259 21/09/26 8259
158465 [삭제예정] 19) 제 발기력 정상인가요? [20] 삭제됨9954 21/09/25 9954
158457 [삭제예정] 스마트폰에 백신어플 여럿 있으면 안좋을까요? [4] 삭제됨10184 21/09/25 10184
158450 [삭제예정] [영어] 간단한 해석 질문입니다 [1] 삭제됨8626 21/09/25 8626
158448 [삭제예정] 몸과 마음이 약해진 사람을 대하는법 [16] 삭제됨8491 21/09/25 8491
158438 [삭제예정] 오징어게임 스포 당했습니다 [21] 삭제됨9109 21/09/24 9109
158436 [삭제예정] 월드플리퍼 계정 무료 나눔 [12] 삭제됨7603 21/09/24 7603
158391 [삭제예정] 보안좋고 가벼운 앱플레이어 있나요? [1] 삭제됨7290 21/09/22 7290
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로