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 99589
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [9] 유스티스 18/05/08 120449
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 168102
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 202435
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 252245
175843 [질문] '실리콘파워' 라는 브랜드 이름 있는 브랜드 인가요? [1] 밥도둑188 24/04/18 188
175842 [질문] 햄버거 빵대신 양상추로 싸주는 프랜차이즈 버거집 있나요..? [1] 하카세264 24/04/18 264
175841 [질문] 미국주식 양도세 관련 질문드립니다 [1] 보리야밥먹자181 24/04/18 181
175840 [질문] 선릉 ~ 잠실 사이에 괜찮은 초밥집 추천 부탁드립니다. En Taro186 24/04/18 186
175839 [삭제예정] 재산처리 관련 법적인 내용 질문 드립니다. 포커페쑤222 24/04/18 222
175838 [질문] 아버님께 드릴 선물을 사야하는데 뭐가 좋을까요? [5] LowCat363 24/04/18 363
175837 [질문] 맥북이 작동되지 않습니다 [1] 자루스352 24/04/18 352
175836 [삭제예정] 지인의 차 사고 질문 [2] 삭제됨723 24/04/18 723
175835 [삭제예정] 축의금 관련 질문드립니다. [24] 인천테란1292 24/04/18 1292
175834 [질문] 간헐적 인터넷 끊김 조언 부탁드려요 [12] 탄야759 24/04/18 759
175833 [질문] 설/추석 명절 홍콩 가보신 분 계신가요? [4] LG의심장박용택775 24/04/18 775
175832 [질문] 비행기 조종 게임이나 시뮬레이션 관련 질문 [3] 지니팅커벨여행690 24/04/18 690
175831 [질문] 재미로 코딱지 파는 심리를 분석해 보려고 합니다(설문 요청). [13] 인생을살아주세요1108 24/04/18 1108
175829 [질문] 워드에서 영단어 마지막글자가 지워지는 증상? [2] beloved773 24/04/18 773
175828 [삭제예정] 미국주식 양도소득세 계산시 이동평균법으로 신고하는 방법이 있을지요...? [19] nexon2281 24/04/17 2281
175827 [질문] 엑셀 고수분들께 요청 드립니다. [6] 귀여운호랑이2097 24/04/17 2097
175826 [질문] 부모님 해외여행 질문드립니다 [6] 리코타홀릭1966 24/04/17 1966
175825 [질문] 엑셀 텍스트나누기 함수 질문 [5] possible1647 24/04/17 1647
목록 이전 다음
댓글

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