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 99613
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [9] 유스티스 18/05/08 120478
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 168130
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 202470
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 252274
175854 [질문] 식물 살리고 싶어요 [1] 취급주의155 24/04/19 155
175853 [질문] 벽걸이 에어컨 구매 관련 질문드립니다 [3] 그냥가끔398 24/04/19 398
175852 [질문] 남자 필라테스나 요가는 어떤가요? ​ [10] 그때가언제라도791 24/04/19 791
175851 [질문] 어린 아기가 2명일때 중고차 추천 부탁드립니다. [38] 카즈하1423 24/04/19 1423
175850 [질문] 중고차 구입하려는데.. 가성비 모델 뭐뭐있을까요? [5] 보리밥992 24/04/19 992
175849 [질문] 엑셀 If 함수 질문드립니다. [4] 고베짱이683 24/04/19 683
175848 [질문] 여행시 네이버, 카카오 해외로그인 방지 [2] 삼성시스템에어컨542 24/04/19 542
175847 [질문] 큐브 실력(?)을 늘리려면 어떻게 해야될까요? [5] 앙스620 24/04/19 620
175846 [질문] 중고차 구입방법 질문합니다. [16] 보아남편546 24/04/19 546
175845 [질문] 부동산 관련 기초 상식, 용어들을 비유를 통해 설명해주실분들....계실까요? [14] 요하네즈433 24/04/19 433
175844 [질문] chatPDF 같은 서비스가 더 있을까요? [1] 리얼포스429 24/04/19 429
175843 [질문] '실리콘파워' 라는 브랜드 이름 있는 브랜드 인가요? [1] 밥도둑1448 24/04/18 1448
175842 [질문] 햄버거 빵대신 양상추로 싸주는 프랜차이즈 버거집 있나요..? [4] 하카세1812 24/04/18 1812
175841 [질문] 미국주식 양도세 관련 질문드립니다 [4] 보리야밥먹자1237 24/04/18 1237
175840 [질문] 선릉 ~ 잠실 사이에 괜찮은 초밥집 추천 부탁드립니다. En Taro1002 24/04/18 1002
175839 [삭제예정] 재산처리 관련 법적인 내용 질문 드립니다. [1] 포커페쑤1074 24/04/18 1074
175838 [질문] 아버님께 드릴 선물을 사야하는데 뭐가 좋을까요? [7] LowCat572 24/04/18 572
175837 [질문] 맥북이 작동되지 않습니다 [2] 자루스454 24/04/18 454
목록 이전 다음
댓글

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