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
수정 아이콘
상세하고 친절한 답변 감사드립니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
174667 [삭제예정] 중고차 거래 잘 아시는분 계실까요? [2] 삭제됨1760 24/01/29 1760
174665 [삭제예정] 비데 전원플러그가 물에 빠졌을경우 [3] 카드영수증1882 24/01/29 1882
174640 [삭제예정] 서울대출발 서울명문투어 코스 좀 봐주세요. [19] 그렇군요3039 24/01/26 3039
174607 [삭제예정] CGV 포토플레이 쿠폰 1매 나눔합니다 SAS Tony Parker 1816 24/01/24 1816
174601 [삭제예정] 유게 글 찾습니다 [2] 택배2095 24/01/24 2095
174576 [삭제예정] 팝송 노래제목 좀 찾아주세요 [1] 삭제됨2138 24/01/22 2138
174571 [삭제예정] 사촌동생이 어플에서 심한 성희롱을 당했는데 이정도면 통매음 신고 가능한가요? [5] 삭제됨4574 24/01/22 4574
174567 [삭제예정] [나눔]이놈의 스타벅스 쿠폰 처리 도와주실분...? [4] 삭제됨2816 24/01/22 2816
174566 [삭제예정] 뻘글. 7급공무원vs꼬마빌딩 건물주 [32] wish buRn4021 24/01/22 4021
174546 [삭제예정] 듀얼센스 인풋이 표시되는 프로그램을 찾고있습니다 [2] v.Serum2060 24/01/21 2060
174469 [삭제예정] 모든 답변 감사드립니다! [34] 삭제됨5917 24/01/15 5917
174444 [삭제예정] 이직 조언좀 부탁드립니다 [16] 삭제됨3244 24/01/12 3244
174436 [삭제예정] 후진하다가 뒤차와 살짝 부딪혔습니다. [13] 삭제됨3578 24/01/12 3578
174435 [삭제예정] 인생의 선배님들 결혼을 결심하게 된 계기는 무엇인가요? [53] 생힝5008 24/01/12 5008
174430 [삭제예정] SONY WF-1000XM4 가져가실분 있을까요?(가져가실분 나왔습니다.) [9] 삭제됨5305 24/01/12 5305
174419 [삭제예정] 육아휴직 부정수급 신고 [5] 삭제됨4160 24/01/11 4160
174373 [삭제예정] 이번주말 타이페이 여행 복장 질문입니다 [9] 삭제됨2610 24/01/08 2610
174365 [삭제예정] 20대 중반 연애 이별 조언 부탁드려요 [39] 삭제됨4712 24/01/08 4712
174353 [삭제예정] 사회성을 어떻게 길러야 할까요? [14] 202310035995 24/01/07 5995
174347 [삭제예정] 어르신들 편한 신발 추천좀 부탁드려요 [8] 삭제됨3945 24/01/06 3945
174320 [삭제예정] 자동차 할부액은 가능하면 줄이는 게 이익일까요? [2] 삭제됨2800 24/01/04 2800
174304 [삭제예정] 아이폰 배경화면 설정할 때 질문 [3] Love.of.Tears.2920 24/01/03 2920
174287 [삭제예정] 친구가 마블 시리즈 너무 많다고 제일 필요한거 5개만 추천해달라고 하는데 [9] ttyu5673331 24/01/02 3331
목록 이전 다음
댓글

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