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
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
공지 댓글잠금 [질문] 통합 규정(2019.11.8. 개정) jjohny=쿠마 19/11/08 99780
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [9] 유스티스 18/05/08 120628
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 168348
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 202668
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 252486
175949 [질문] 43인치 티비 추천부탁드립니다!! 언니네 이발관3 24/04/26 3
175948 [질문] 자전거 전동 펌프 질문입니다 레드드레곤~426 24/04/26 426
175947 [질문] 와우 fhd 환경에서 7500과 783d 차이가 클까요? [3] 길갈663 24/04/25 663
175946 [질문] 아이브 곧 나올 앨범CD를 구입하려고 합니다 [5] 서쪽으로가자1055 24/04/25 1055
175945 [질문] 중저가 유선 헤드셋 추천 부탁드립니다 [2] 요하네즈1112 24/04/25 1112
175944 [질문] PC 견적 재문의 [3] 이동파1447 24/04/25 1447
175943 [질문] 비즈니스 이메일에 이모티콘 사용, 어떻게 생각하시나요 [37] 앗흥2095 24/04/25 2095
175942 [질문] 등단의 개념이 궁금합니다! [9] 파란토마토1772 24/04/25 1772
175941 [질문] 커피(원두) 맛에 대한 질문이 있습니다 [35] 시무룩1437 24/04/25 1437
175940 [질문] 여행 유튜버 추천 좀 받을 수 있을까요? [9] 라리1353 24/04/25 1353
175939 [질문] 카카오톡 톡캘린더로 광고 오는건 뭘까요? [1] 소금물589 24/04/25 589
175938 [질문] 제주신화월드 근처에 아침 가능한 식당 찾습니다 [5] 회전목마1259 24/04/24 1259
175937 [질문] 이번 어도어 사태에 대한 궁금점 [25] 문인더스카이2193 24/04/24 2193
175936 [질문] 일본 지방에서 잘 터지는 통신사가 따로 있나요? [3] 숄츠1126 24/04/24 1126
175935 [질문] 아이폰 구매 질문드립니다. [2] LCK제발우승해877 24/04/24 877
175934 [질문] 수학 한문제 질문입니당 [5] 월터화이트1237 24/04/24 1237
175933 [질문] 플스하기 적절한 TV 사이즈는 어느 정도라고 생각하시나요? [24] 선플러903 24/04/24 903
175932 [질문] 아재분들 옷 어디서 사십니까 [19] Alcohol bear1216 24/04/24 1216
목록 이전 다음
댓글

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