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
수정 아이콘
상세하고 친절한 답변 감사드립니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
158603 [삭제예정] 스벅 1+1 쿠폰 가져가실분있나요? [4] 핸드레이크10734 21/09/30 10734
158599 [삭제예정] 인터넷 해지 관련 문의 드립니다. [2] 삭제됨7440 21/09/30 7440
158595 [삭제예정] 와이파이 데이타 사용에 알수 없는 프로그램이 있습니다. [2] 삭제됨7599 21/09/30 7599
158560 [삭제예정] 피쟐에 NFT 하시는분? [10] 삭제됨9780 21/09/29 9780
158512 [삭제예정] (삭제예정)유머게시판 보고 질문 [11] 삭제됨9236 21/09/27 9236
158508 [삭제예정] 그래픽카드 수리관련 고민입니다. [7] 로트리버9790 21/09/27 9790
158507 [삭제예정] 삭제합니다. [20] 삭제됨9392 21/09/27 9392
158502 [삭제예정] 대출관련 질문입니다. [5] 삭제됨10982 21/09/27 10982
158488 [삭제예정] 아파트 가전제품 옵션 질문입니다. 지금 선택하면 추후 입주할 때 구형이 되어 손해일까요? [8] 삭제됨7080 21/09/26 7080
158470 [삭제예정] 부끄럽지만 파이썬 관련해서 도움 주실 분을 찾고 있습니다. [14] 삭제됨10273 21/09/26 10273
158468 [삭제예정] 윈도우 화면 깨짐 현상. [2] 삭제됨8919 21/09/26 8919
158465 [삭제예정] 19) 제 발기력 정상인가요? [20] 삭제됨10373 21/09/25 10373
158457 [삭제예정] 스마트폰에 백신어플 여럿 있으면 안좋을까요? [4] 삭제됨10614 21/09/25 10614
158450 [삭제예정] [영어] 간단한 해석 질문입니다 [1] 삭제됨9178 21/09/25 9178
158448 [삭제예정] 몸과 마음이 약해진 사람을 대하는법 [16] 삭제됨8973 21/09/25 8973
158438 [삭제예정] 오징어게임 스포 당했습니다 [21] 삭제됨9887 21/09/24 9887
158436 [삭제예정] 월드플리퍼 계정 무료 나눔 [12] 삭제됨8067 21/09/24 8067
158391 [삭제예정] 보안좋고 가벼운 앱플레이어 있나요? [1] 삭제됨7543 21/09/22 7543
158373 [삭제예정] . [8] 삭제됨8935 21/09/22 8935
158372 [삭제예정] [19금] 연애 초기인데 2가지 문제가 있습니다. [7] 삭제됨10502 21/09/22 10502
158365 [삭제예정] . [9] 삭제됨10605 21/09/21 10605
158334 [삭제예정] 손해 볼걸 알면서도 행동하시나요? [19] 삭제됨11315 21/09/19 11315
158323 [삭제예정] 유튜브 임베디드 링크 클릭 관련 질문 체리과즙상나연찡7141 21/09/19 7141
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기
회원정보 보기
닫기