PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/11/13 00:47:05
Name nekorean
File #1 testing1.png (55.7 KB), Download : 17
File #2 testing.png (67.7 KB), Download : 3
Subject [질문] 파이썬 코드 질문이 있습니다 (수정됨)




------------------------------------------------------------------------------------------------------------------
제가 댓글을 제대로 이해한게 맞을까요?ㅜㅜ
그런데 이렇게 하면 못찾았을 때 다시 입력 받는게 없더라구요ㅜㅜ
그리고 while isWord: 로 코드를 짜면
Traceback (most recent call last):
  File "C:UsersuserDesktop새 폴더ducode.py", line 16, in
    while isWord:
NameError: name 'isWord' is not defined
이렇게 떠서 다시 while True: 로 바꿨습니다
----------------------------------------------------------------------------------------------------------------------
안녕하세요
제가 과랑 상관 없는 기초 필수 프로그래밍 과목을 듣고 있는데요
교수님께서 가르치시는 것보다 어려운 과제를 주셔서 지금 머리가 아픕니다ㅜㅜ
제 나름대로 코드를 짰는데 안되더라구요... 혹시 보시고 어디가 잘못됐는지 알려주시면 감사하겠습니다.

#리스트는 이름 옆에 1, 2, 3... 순으로 짓는다.
#리스트 안에 있는 속성은 가수명, 제목명으로 한다.
L1 = ["악동뮤지션", "어떻게 이별까지 사랑하겠어,널 사랑하는 거지", "이찬혁"]
L2 = ["아이유", "Love Poem", "이종훈"]
L3 = ["아이유", "어젯밤 이야기"]
L4 = ["소방차", "어젯밤 이야기"]
L5 = ["악동뮤지션", "다리꼬지마"]
L6 = ["태연", "불티"]
L7 = ["태연", "Why"]
L8 = ["태연", "I"]
L9 = ["Why", "운명"]
L10 = ["베이비 복스", "Why"]
L11 = ["청하", "Why Don't You Know"]
L = [L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11]

isWord = False
k = input("검색어 입력")
while True:
    for s in range(len(L)):
        if k in L[s]:
            isWord = True
            for n in L[s]:
                print(n, end=" ")
            print()
            break
    if isWord == False:
        print("검색 불가")

지금 제가 하고 싶은 것은, 노래를 찾아서 출력하는 것인데, 그걸 찾을 때까지 무한으로 돌리고 싶고(while 코딩)
그래서 결과가 있으면 break 를 하고 결과가 없으면 break 없이 반복하는 겁니다
리스트는 노래 파일의 속성을 담은 것이구요
근데 어디를 잘 못 쓴 건지 제 마음처럼 안되네요ㅜㅜ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
Je ne sais quoi
19/11/13 00:54
수정 아이콘
마지막 두 줄을 이렇게 바꿔주세요
__if isWord:
____break
__else
____print("검색 불가")
nekorean
19/11/13 01:18
수정 아이콘
음, 이거는 결과가 없으면 break를 하는 건가요?
저는 결과가 없으면 멈추지 않고 다시 입력 받고 검색하는 걸 반복하고 싶은거라ㅜㅜ
Je ne sais quoi
19/11/13 01:22
수정 아이콘
아 그러면 아래 댓글에 쓰신 거처럼 다시 입력을 받는 부분도 필요하겠네요
19/11/13 01:01
수정 아이콘
최소한으로 고쳐서 수정한다면 while True: 대신 while isWord: 를 해주시면 깔끔합니다.
그러나 찾을 때까지 무한으로 돌린다는 말이 이해가 안되는데, 어차피 못찾으면 무한으로 돌려도 계속 못찾는건데 혹시 입력을 다시 받으시려는건가요? 그렇다면 input을 wihle 안에 넣어주시면 되구요.
nekorean
19/11/13 01:17
수정 아이콘
네, 제가 "무한"이라고 뜻을 잘못 썼나보네요ㅜㅜ 정확하게 말하자면 1. 입력을 한다. 2. 검색을 한다. 3-1. 결과가 있다-> 결과를 출력한다. 3-2. 결과가 없다 -> "결과 없음"이라고 출력하고 다시 입력받는다 입니다

그러면
while isWord == True:
______k = input("검색어 입력")
이렇게 하고 제가 쓴 코드를 이어서 쓰면 될까요?
19/11/13 01:54
수정 아이콘
input만 while 안으로 넣고, isWord = False는 while 밖으로 빼주셔야 맞게 동작합니다.
19/11/13 01:56
수정 아이콘
그리고 수정하신 질문에 이미지로 첨부된 코드를 보면 break가 처음과는 다른 곳에(for 밖에) 있는데, 이 break는 for를 나가기 위한 break이므로 처음 쓰신 위치(for 안에)에 있어야 합니다.
nekorean
19/11/13 02:34
수정 아이콘
break를 처음에 쓴 위치에 넣으면 제가 다시 첨부한 사진처럼 입력을 계속 받더라구요ㅜㅜ
그래서 안으로 들여썼더니 멈추길래.... 뭐가 잘못됐을까요ㅜㅜ 정말 죄송합니다
아닌밤
19/11/13 02:32
수정 아이콘
루프가 중첩되어 있을 때, break 는 자신과 가장 가까운 루프에만 영향을 미칩니다. 위의 코드에서는 for s in range(len(L)): 부분.

그래서 중첩된 루프를 벗어나기 위해 isWord 를 사용하는 것인데, 위에 "NameError: name 'isWord' is not defined" 에러가 난 부분은 에러 메시지 내용 대로 isWord 가 정의되지 않는 상태에서 while 을 사용하려고 해서 생긴 에러입니다.

가독성을 위해 변수명을 바꿔서 적으면 아래처럼 while 문에서 찾기 전에 정의를 해주어야 합니다.
found_song = False
while not found_song:
____# .....
____if 노래를 찾음:
________found_song = True
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
175839 [삭제예정] 재산처리 관련 법적인 내용 질문 드립니다. [1] 포커페쑤1099 24/04/18 1099
175838 [질문] 아버님께 드릴 선물을 사야하는데 뭐가 좋을까요? [7] LowCat605 24/04/18 605
175837 [질문] 맥북이 작동되지 않습니다 [2] 자루스463 24/04/18 463
175836 [삭제예정] 지인의 차 사고 질문 [2] 삭제됨854 24/04/18 854
175835 [삭제예정] 축의금 관련 질문드립니다. [24] 인천테란1603 24/04/18 1603
175834 [질문] 간헐적 인터넷 끊김 조언 부탁드려요 [14] 탄야898 24/04/18 898
175833 [질문] 설/추석 명절 홍콩 가보신 분 계신가요? [4] LG의심장박용택855 24/04/18 855
175832 [질문] 비행기 조종 게임이나 시뮬레이션 관련 질문 [4] 지니팅커벨여행751 24/04/18 751
175831 [질문] 재미로 코딱지 파는 심리를 분석해 보려고 합니다(설문 요청). [13] 인생을살아주세요1230 24/04/18 1230
175829 [질문] 워드에서 영단어 마지막글자가 지워지는 증상? [2] beloved834 24/04/18 834
175828 [삭제예정] 미국주식 양도소득세 계산시 이동평균법으로 신고하는 방법이 있을지요...? [19] nexon2376 24/04/17 2376
175827 [질문] 엑셀 고수분들께 요청 드립니다. [6] 귀여운호랑이2190 24/04/17 2190
175826 [질문] 부모님 해외여행 질문드립니다 [6] 리코타홀릭2047 24/04/17 2047
175825 [질문] 엑셀 텍스트나누기 함수 질문 [5] possible1709 24/04/17 1709
175824 [질문] 읽기 쉬운 소설 또는 책 추천 [39] 작은마음2337 24/04/17 2337
175823 [질문] 부모자식간 부동산 매매서 증여세 문의드립니다 [12] Vertigo1294 24/04/17 1294
175822 [질문] 스팀할인 몬스터헌터 월드 구매 문의드립니다 [2] 공놀이가뭐라고507 24/04/17 507
175821 [질문] 서프샤크 vpn 30일날 환불 요구하니 구독 자동갱신만 취소해줬네요. 방법없을까요? [2] 그때가언제라도939 24/04/17 939
175820 [질문] 신차 틴팅 관련 질문 드립니다. [10] 원스791 24/04/17 791
175818 [질문] 비슷한 노래 추천 부탁드립니다. Aiurr543 24/04/17 543
175817 [질문] 사이버펑크 2077할만 한가요? [13] 구급킹959 24/04/17 959
175816 [질문] 유재석의 12제자는 누구인가요? [24] 오타니2610 24/04/17 2610
175815 [질문] 아기가 키즈카페 대신 어린이집에 가야 하는 이유 [28] 랑비2072 24/04/17 2072
목록 이전 다음
댓글

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