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
수정 아이콘
상세하고 친절한 답변 감사드립니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
공지 댓글잠금 [질문] 통합 규정(2019.11.8. 개정) jjohny=쿠마 19/11/08 99623
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [9] 유스티스 18/05/08 120488
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 168142
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 202482
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 252295
175857 [질문] 무접점 키보드 추천 부탁드립니다~ [1] 장헌이도368 24/04/20 368
175856 [질문] 자산 배분을 자동으로 리밸런싱을 해주는 핀테크가 있을까요? VictoryFood405 24/04/20 405
175855 [질문] 나폴레옹 활동시기 모르면 무식한 걸까요? [29] 수금지화목토천해1173 24/04/19 1173
175854 [질문] 식물 살리고 싶어요 [11] 취급주의1179 24/04/19 1179
175853 [질문] 벽걸이 에어컨 구매 관련 질문드립니다 [5] 그냥가끔1104 24/04/19 1104
175852 [질문] 남자 필라테스나 요가는 어떤가요? ​ [17] 그때가언제라도1543 24/04/19 1543
175851 [질문] 어린 아기가 2명일때 중고차 추천 부탁드립니다. [43] 카즈하1990 24/04/19 1990
175850 [질문] 중고차 구입하려는데.. 가성비 모델 뭐뭐있을까요? [8] 보리밥1274 24/04/19 1274
175849 [질문] 엑셀 If 함수 질문드립니다. [4] 고베짱이725 24/04/19 725
175848 [질문] 여행시 네이버, 카카오 해외로그인 방지 [2] 삼성시스템에어컨578 24/04/19 578
175847 [질문] 큐브 실력(?)을 늘리려면 어떻게 해야될까요? [5] 앙스683 24/04/19 683
175846 [질문] 중고차 구입방법 질문합니다. [16] 보아남편593 24/04/19 593
175845 [질문] 부동산 관련 기초 상식, 용어들을 비유를 통해 설명해주실분들....계실까요? [14] 요하네즈484 24/04/19 484
175844 [질문] chatPDF 같은 서비스가 더 있을까요? [2] 리얼포스496 24/04/19 496
175843 [질문] '실리콘파워' 라는 브랜드 이름 있는 브랜드 인가요? [1] 밥도둑1476 24/04/18 1476
175842 [질문] 햄버거 빵대신 양상추로 싸주는 프랜차이즈 버거집 있나요..? [4] 하카세1882 24/04/18 1882
175841 [질문] 미국주식 양도세 관련 질문드립니다 [5] 보리야밥먹자1272 24/04/18 1272
175840 [질문] 선릉 ~ 잠실 사이에 괜찮은 초밥집 추천 부탁드립니다. En Taro1019 24/04/18 1019
목록 이전 다음
댓글

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