강의에 대한 열정과 그 코딩 관련 지식에다가, 2년이 넘은 동영상에 최근 댓글까지 답변달고 계신걸 보고 놀랐습니다. 어쩌다 들었는데 정말 귀에 쏙쏙 들어오고 평소 문의를 가졌던 부분에 대한 설명까지 빠트리지 않으시니 기존에 다른 유투버를 따라 공부하던 HTML, Javascript 다 중단하고 선생님 강의로 바꿔듣고 있는데 정말 좋네요. 책 안사고 공부하고 있었는데, 나중에라도 참고할 수 있게 책을 사는게 낫겠다는 생각이 들게 하십니다. 정말 감사하고 있습니다. 아래 질문들을 보니 저와 비슷한 질문이 많네요. 3:30에 1에서 46까지 더하면 1000을 넘는다고 하셨는데, 제가 한 수식에선 1에서 45까지 더하면 이미 1035입니다. (엑셀로 검산을 해도 마찬가지, 1+2+3+..+45=1035로 나옵니다.) j와 i 중 어떤 것을 먼저하느냐 차이인 것 같은데요. i를 나중에 하게 되면 이미 1000을 넘었는데 다시 1을 더하게 되지 않나요? 가이드 부탁드립니다. i = 0 j = 0 while j
max_value = 0 a =0 b= 0 for i in range(0,99+1): j= 100 - i
if max_value < i*j: max_value= i*j a=i b=j print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value)) ****************************************************************************************************** if max_value < i*j: max_value 가 i*j 보다 작아야하는 이유가 있을까요?
2번문제에서 character[key list(i)] 이부분이요 key list 앞엔 character가 들어가는데 뒤에 value list 앞엔 왜 character가 안붙나요?? 그리고 key list [[i]] i부분이 소괄호가 아닌 대괄호를 넣는이유는 리스트라서 그런건가요??
key=["q","w","e","r"] value=["a","b","c","d"] chara={} for i in range(4): chara[key[i]]=value[i] print(chara) --------------------------------- 여기서 chara[key[i]]=value[i] 이부분이 이해가 잘안되는데요 선생님 그러면 첫번째로 chara[q]=a 이렇게 나올텐데 딕셔너리 구문에서는 chara["q"]="a" 이렇게 큰따옴표가 있어야지 딕셔너리에 요소를 추가하는 바른문장아닌가요? 잘못된문장같은데 컴퓨터는 어떻게 인식을하고 딕셔너리에 요소를 추가하는건가요?
일단 딕셔너리는 숫자, 문자열, 불, 튜플을 키로 가질 수 있습니다. 따라서 { true:10, 10:20 } 등도 가능합니다. 이어서 변수를 넣으면, 변수 내부의 값을 사용하게 됩니다. a = "안녕하세요 dicta = {} dicta[a] = 10 하면 { "안녕하세요": 10 }이 됩니다. [a가 문자열이므로 문자열이 저렇게 들어갑니다]. 두 가지를 생각해보시면서 코드를 다시 살펴보시면 쉽게 이해하실 수 있을 것 같습니다!
마지막 강의에서 for i in 목록: if i < 최소값: 최소값=i if i > 최대값: 최대값=i 라고 하셨는데요. 위의 최대값처럼 > 표시를 넣으니 0 이나오더라구요. 왜인가요? 위 공식에서 최소값과 최대값을 구하는 공식이 맞는데 왜 마지막 문제의 결과값이 다르게 나오는건가요?
선생님 3번문제 풀다가 막히는 부분이 있어 질문드립니당.. 처음 문제를 보고 → i를 while반복문 이용해서 증가시켜줌 → 증가시켜줌과 동시에 sum_value변수에 계속해서 더해줌 → sum_value > limit 일때 break문 사용해서 끊어줌 이렇게 풀어봐야겠다 생각을해서 limit = 1000 i = 1 sum_value = 0 while True: sum_value + i i += 1 if sum_value > 1000: print(sum_value) break print("{}를 더할때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value)) 이렇게 작성해봤는데.. 오류인지 실행이 안되는거 같더라구요.. 어느부분을 수정해야할지 감이잘안잡혀서 질문드립니당..
안녕하세요 좋은 강의 너무 잘 듣고 있습니다. print의 들여쓰기에 대해 궁금한 것이 있어서 여쭙습니다. for i in range(0,100): j = 100 - i # 최대값 구하기 if max_value < i * j: a = i b = j max_value = i * j print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value)) -->>> 이렇게 하는 경우에는 50 * 50 = 2500 한 문장만 출력되는데 for i in range(0,100): j = 100 - i # 최대값 구하기 if max_value < i * j: a = i b = j max_value = i * j print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value)) -->>> 이렇게 하는 경우에는 1부터 50까지 50개의 문장이 출력이 됩니다. 제가 이해하는 바로는 아래 코드의 경우에는 if가 참일 때의 모든 경우에 대해 print가 작동하므로 50개의 문장이 다 나오는 것은 이해가 되는데 정답 코드에서는 한 줄만 출력 되는 이유는 뭔지 궁금합니다. 저런 경우에는 마지막으로 if가 참인 마지막 값만 받아서 그런 것인지 아니면 다른 이유가 있을지 여쭙습니다(if 구문의 규칙 같은 것인지도 궁금합니다). 항상 감사드립니다.
너무 쉬운 질문인가 싶긴한데요 ㅠ 3번에서요!! while sum_value < limit: 이 줄에서요 1000되기 직전 값에서 출력되어야 하는 거 아닌가요? ㅠㅠ sum_value 가 limit인 천보다 작을 때 반복인데 1035에서 마지막으로 출력되고 마무리되는 것이 이해가 잘 되지 않아요 ㅠ
4-3번 문제 질문이 있습니다. 알려주신대로 for 구문과 if 구문을 작성하고 나면 숫자가 50이 될때까지는 for구문과 if 구문이 모두 실행되고 그 이후부터는 if 구문은 실행되지 않고 for 구문만 실행되어 99까지 다 돈 후에 출력된다고 이해하면 맞게 이해한건가요?
limit = 10 i = 1 sum_value = 0 while sum_value < limit: print("{}번째 반복입니다.".format(i)) print("{}를 더할 때 값은 {}입니다.".format(i, sum_value)) sum_value += i i += 1 제가 (이해가 쉽지 않아서) 위와 같이 코드를 바꿔 보았는데요. 1번째 반복입니다. 1를 더할 때 값은 0입니다. 2번째 반복입니다. 2를 더할 때 값은 1입니다. 3번째 반복입니다. 3를 더할 때 값은 3입니다. 4번째 반복입니다..... 실행 시에 위와 같이 나타나는데 여기서 1번째 반복의 sum_value 가 '0' 이 되는 것이 이해가 가지 않습니다. sum_value '0' 에서 시작하여 += 1씩 증가하도록 입력하였는데 어째서 '0' 이 되는 걸까요? ^^;;;;;;;;
선생님! 매일 재밌는 강의 잘 듣고있습니다. 4번 최대, 최소값 구하는 문제 마지막 강의 보고 왔는데 이해가 안되서 질문 드립니다. max_value = 0 a = 0 b = 0 for i in range(1, 100, 1) :
j = 100 - i if max_value < i * j : max_value = i * j a = i b = j print("최대가 되는 경우 : {} * {} = {}".format(a, b, max_value)) 위의 코드에서 if문부터... max_value = 0 이고 연산(i * j 의 연산 1 * 99 부터 시작해서 99 * 1까지) 된 모든 수는 max_value 보다 큰 수이기 때문에 참인데 그 결과값 중에서 50 * 50 = 2500이 가장 큰 값임을 어떻게 찾아내는지 이해가 안됩니다. 몇번 째 줄의 코드가 이 중에 50 * 50 이 가장 큰 수임을 확인하는 줄인가요? 제가 어떤 부분을 착각하고 있는지 잘 모르겠습니다. 한줄기 빛을 내려 주세요!ㅠㅠ
안녕하세요 혼공파 책 보면서 공부중인데 기본개념 설명은 어느정도 이해는 되는데 진짜 확인 문제의 난이도는 기본개념에 비해서 난이도가 너무 갑자기 훅 뛰는 느낌입니다. 해설 강의를 봐도 기본개념에 설명도 없는걸 바로바로 적용하는 느낌이구요 책 자체는 기본 개념 이해는 잘되서 좋다면 확인 문제만 풀면 진짜 뭐가 뭔지 하나도 몰라서 좌절스러운데 지금 제가 느끼는 학습과정이 정상인가요? ;; 아니면 책의 원래 의도인가요? ;; 암튼 확인문제는 이해가 도저히 안되서 따라해보기만 하는데 이렇게 지나가도 되는건가요?
넵 정상이라고 보시면 됩니다. 어렵게 느껴지지 않고 조금 생각해서 다 풀리는 문제는 풀 필요가 없는 문제라고 생각해서, 문제는 초급 초중급 사이의 문제를 넣었습니다. 책이 대학교 한 학기 과정 정도이고 + 대학에서도 한 절의 문제를 한 주에 풀어오라고 하는 식이므로 = 시간을 오래 잡고[한 문제에 2-3일], 풀어보시는걸 추천드립니다. PS. 반복문과 함수 쪽만 어려운 편이라, 이쪽의 문제들은 한 주에 한 절 확인문제 풀어오는 것이 과제로 나오고 있습니다. 조금 생각해보고 안 풀리는 경우, 답지를 보고 외우셔도 상관 없습니다[원래 첫 걸음은 답지를 어느 정도 외우는 것이 좋다고 생각합니다]! 또는 강의 들으면서 한 번 보고 2-3일 후에 다시 풀어보는 형태의 공부도 좋습니다!
안녕하세요 다름이 아니라 188페이지 2번문제를 혹시 key_list=["name","hp","mp","level"] value_list=["기사",200,30,5] character={} i=0 for key in key_list: character[key]=value_list[i] i+=1 print(character) 이렇게 풀어도 {'name': '기사', 'hp': 200, 'mp': 30, 'level': 5} 값이 나오는데 혹시 이렇게 풀어도 무관한가요?? + 4번 문제 max_value=0 a=0 b=0 for i in range(1,100): j=100-i if max_value
(1) 어떻게 푸셔도 현재 정도 단계는 답만 나오면 아무 상관 없습니다! (2) 파이썬에서는 사실 큰 상관은 없습니다! 다만 원래 대부분의 프로그래밍 언어는 변수를 선언한 단계[들여쓰기] 아래에서만 변수를 사용할 수 있습니다. 즉 다음과 같은 코드는 작동하지 않습니다. ``` for ...: a = 10 # 들여쓰기 안쪽에서 선언했는데 print(a) # 밖에서 사용 ``` 다만 파이썬은 이런 코드가 문제 없이 동작합니다. 근데 이게 일반적인 개발자의 인식에서 생각하기에 이해가 잘 안 되는 코드이고 + 파이썬도 나중에 함수 등으로 넘어갔을 때 위와 같이 코드를 작성하면, 대체 이 변수가 어디에서 온 녀석인지 이해하기 힘들어지는 문제가 생깁니다. 그래서 일반적으로 다음과 같이 씁니다! ``` a = 0 # [변경] for ...: a = 10 print(a) # 이 단계에서 사용하니, 적어도 이 들여쓰기 단계에 변수가 선언되었어야 한다. ```
안녕하세요! 확인문제 4번 아래 코드에서 for i in range(1, 99 + 1) j = 100 - i # i = 1, j = 99 ... if max_value < i * j: # 0 < 1 * 99 = 99 max_value = i * j a = i b = j max_value 변수의 값을 0으로 처음에 지정을 하였는데 그렇게 되면 if 구문에서 i * j 가 처음부터 참으로 성립되어 위 for 반복문 코드에 따라 모든 값이 다 출력되어야 하는게 아닌가요? 돌머리라 아무리 생각해도 이해가 안됩니다.. ㅠ
limit = 10000 i = 1 sum_value = 0 while True: sum_value += i i += 1 if sum_value > 10000: break print("{}를 더할 때 {}을 넘으며 그떄의 값은 {}입니다.".format(i-1, limit, sum_value)) 3번 문제 이렇게 했는데 답이 142나오네요.. 이렇게 하면 틀린걸까요?
안녕하세요. 강의 잘 듣고 있습니다. 6:37에서 이것은 예전 확인 문제에서 다뤘기 때문에 자세하기 다루지 않는다고 하셨는데... 어느부분인지 기억이 잘 안나네요..ㅜㅜ 죄송하지만 질문드리겠습니다.. max_value < i *j: 보다 작은것을 max_value = i * j에 넣었는데 왜 최대 값이 나오는지 이해가 안되네요.
아닙니다. "답이 나오고, 그 답에 대한 설명이 가능하다"라면 어떤식으로 해도 상관 없습니다. 다만 현재 코드는 이러한 설명이 불가능합니다. "몇을 더할 때 10000을 넘는가?"를 찾는 문제인데 (1) 어떻게 갑자기 "143"이라는 숫자를 등장시켰는가?[답을 바로 찍었는가?] (2) 왜 11을 더했는가? 로 """답을 모른다고 가정하고 답을 구하는 코드를 작성해야 하는 것인데 이미 답을 알고 있을 때만 구현할 수 있는 코드"""를 만드신 것이라서 "답에 대한 설명"이 불가능합니다. 그래서 현재 코드는 "문제를 푸는 코드"라고 할 수 없습니다. 참고로 현재 파이썬 강의는 개정판 강의가 있으므로 그쪽을 보시는걸 추천드립니다![강의를 2배로 늘려 좀 더 자세히 설명합니다!"]
확인문제 3번을 For 구문을 이용하여 코드를 진행하면 에러가 발생하는데 이유가 먼지 알수 있을까요? limit = 1000 i = 1 sum_value = 0 for sum_value in range(1000): if sum_value < limit: sum_value += 1 i += 1 else: print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다".format(i, limit, sum_value)) Error message: File "C:\Python_Boreum\ex.py", line 24 print("{}를 더할 때 {}을 넘으며 그때의 값 은 {}입니다".format(i, limit, sum_value)) IndentationError: expected an indented block
안녕하세요? 2번에서 짠 제 코드를 실행하면 결과가 다르게 나오는데 이유 설명 부탁드립니다. (결과: {'name': 5, 'hp': 5, 'mp': 5, 'Level': 5}) keylist = ["name", "hp", "mp", "Level"] valuelist = ["Knight", 200, 30, 5] character = {} for i in range(len(keylist)): for j in range(len(valuelist)): character[keylist[i]] = valuelist[j] print(character)
한 번 "character[keylist[i]] = valuelist[j]"라는 코드 위에 print(keylist[i], valuelist[j])를 넣으셔서 어떤 키에 어떤 값이 들어가는지 확인해보시면 쉽게 이해하실 수 있을 것이라 생각합니다! 참고로 현재 혼자 공부하는 파이썬은 개정판 강의가 있습니다. 훨씬 자세하고 내용도 기니(2배 분량), 강의는 개정판 강의를 보시는걸 추천합니다!
1을 빼야 합니다! [책 초판에 저도 헷갈려서 오탈자를 냈습니다 😂] . 마지막 while 반복문을 보면 1. sum_value += i로 10000을 이때 넘는데 2. 그 다음 줄에서 i += 1로 1을 더합니다. 3. 그리고 while sum_value < limit 조건이 False라서 탈출하는데 . 여기에서 불필요한 2번 과정이 생겨서 이걸 다시 빼줘야 합니다![141을 더할 때 10011이 됩니다]
기초적인 것일수도 있지만 += 연산의 의미가 무엇인가요? sum_value += i 라고 하면 처음에는 sum_value + i = ? , 두번째에는 (sum_value + i ) + i = ? 세번째에는 ((sum_value + i) + i ) + i = ? 인가요? 그리고 여기서 물음표로 표시해둔 = 다음도 정확하게 뭔지 잘 모르겠습니다 ㅠㅠ
limit = 1000 i = 1 sum_value = 0 for i in range(0, limit): sum_value += i if(sum_value > limit): break
print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value)) limit을 1000일 때, PS C:\JavaStudy\python\혼자공부하는파이썬> python test.py 45를 더할 때 1000을 넘으며 그때의 값은 1035입니다. limit을 10000으로 바꿨을 때, PS C:\JavaStudy\python\혼자공부하는파이썬> python test.py 141를 더할 때 10000을 넘으며 그때의 값은 10011입니다. 해당 코드는 문제가 있는건가요? 1000일 때는 45로 나오네요. break 걸어서 나오게되면 i가 46일 때 1000을 넘으니까 종료되어서 46으로 올라가지 않는건가요?
강의 잘 듣고 있습니다. 4번문제 답이 나오는 논리가 for i in range(1,100) 반복문을 돌려서 max_value < i*j 일때, Max_value = i*j 이고 a = i b= j 로 선언한다. 그래서 계산을 해보면 i =51 j = 49일때 if 문 을 적용하면 이전 maxvalue는 50 *50 으로 i*j보다 커서 더이상 밑의 if조건문이 실행 안되고 A=50,b=50 max_value =2500으로 종료 되는건가요?
선생님! 강의 잘 들었습니다. 그런데 for i in range(1, 100): j = 100 - i if max_value < i * j: max_value = i * j print(max_value) 이렇게 코딩했을때는 2500 하나밖에 출력을 안하는데(max 함수도 안썼는데 말이죠!) 왜 들여쓰기해서 for i in range(1, 100): j = 100 - i if max_value < i * j: max_value = i * j print(max_value) 이렇게 출력하면 모든 곱한 값이 출력될까요? 가르쳐주시면 감사하겠습니다 ㅠㅠ
선생님 명강의 다시 정주행중인데 정말 잘 가르쳐주셔서 감사합니다 2번문제에 간단한 질문이 있는데 key_list= [1, 3, 2,4 ,5] value_list=["a", "b", "d", "c", "e"] character= {} for i,j in key_list,value_list: character[i]=j print(character) 혹시 이런 코드를 사용하면 반복문이 실행되지 않던데 이유를 알 수 있을까요?
질문있습니다! 3:42부분에서 while문에서 마지막 True가 나올때, 그때까지 더한 숫자가 1035인데, 그때의 숫자는 46을 더할 때가 아니라 45를 더할 때가 맞는 것 같습니다(그 숫자를 더하고 나서도 sum_value += i 밑에 i += i가 있으므로..) 계산을 해보니까 46까지 더하면 1081이 나옵니다(교재도 그렇습니다!). 그럼 올바르게 답이 나오게하려면 처음에 i를 0으로 지정해두고, sum_value += i줄과 i += 1줄을 바꾸는 수밖에 없는 건가요? 다른 간단한 방법이 있으면 알고 싶습니다! 감사합니다.
넵 오탈자입니다 흑흑.... 프로그래밍에는 정확한 정답이라는 것이 없습니다...! 다른 댓글들을 보시면 관련된 내용들이 있는데, 다른 분들의 생각들도 한 번 보시면서, 내 생각이 내가 생각하기에 더 간단한지, 다른 사람 생각을 채용해보는 것이 좋은지 등을 직접 생각해보시면 좋을 것 같습니다...!
안녕하세요! 4번문제 질문드립니다. 1) for i in range(1, 100): j = 100 - i
if i*j > (i+1)*(j-1): break
a = i b = j max_value = i*j 선생님이랑은 다르지만 저는 이렇게 풀어서 답이 50*50 = 2500로 나왔는데요. 2) for i in range(1, 100): j = 100 - i
if i*j > (i+1)*(j-1): break a = i b = j max_value = i*j 이렇게 a, b, max_value를 for문안에 들여쓰기하면 49*51 = 2499로 잘못된 답이 나오더라구요. break를 했는데 왜 들여쓰기만으로 이런 결과가 나오는지 알 수 있을까요??
2번 문제 질문 드립니다 for a in range(4) : character[key_list[i]] = value_list[i] print(character) 이 코드를 조금 하나하나 해석하려는데 잘 안되더라고요 ..순서대로 해석해보는것이요 일단 a 에다가 반복 4번을 하고 나열 한다는 뜻 으로 해석했고요.... character[key_list[i]] = value_list[i] 이거는 이제 a에다가 반복할 코드이고 반복시 i 에다가 0,1,2,3 이렇게 입력된다는걸로 해석을 했습니다 마지막 문장 print(character) 가 살짝 이해가 안가는데 지금까지 쌓는건 a 에다가 쌓았으니까 print(a) 를 해야하는 것이 아닌가..라는 생각이 조금 들어서요 ㅜ 제가 놓친부분은 어느부분일까요 질문도 지금 제대로 못하겠네요 질문할것도 두루뭉실하게 머릿속에서 정리가 잘 안되는것 같습니다 ... 아는것이 없어서 이런가 ㅜ
위의 코드는 오류가 발생합니다! for i in range(4):로 해주셔야 i에 반복 변수가 들어갑니다. print(character)의 경우는 딕셔너리 전체를 출력하는 코드입니다![character가 딕셔너리이므로] 제가 잠시 수술을 받고 오느라 정신이 없어서 답변이 늦어져서 죄송합니다 @_@ !
2번 문제 질문 있습니다 ㅜㅠ.. 1. 왜 character[key_list[i]] = value_list[i] 를 하면 character 딕셔너리에 키가 생성되는것 인가요? 2. 어떻게 character 이라는 딕셔너리에 key_list라는 키가 없음에도 character[key_list[i]] = value_list[i] 라는 코드를 사용 할 수있는 건가요? 3. 만약 dict 라는 딕셔너리에 a라는 키와 value1이라는 값이 있고 b라는 키와 value2 라는 값이 존재한다면 for key in dict 에서 key의 역할은 a와 b를 한번씩 받고 dict[key] 를 하면 value1과 value2 라는 값들이 출력되는 것이라고 이해했는데 제가 이해한 부분들이 옳바른가요? 틀리다면 정정 부탁드립니다. 질문이 많아 죄송합니다. 계속 고민하다 답답하여 질문드립니다.
안녕하세요 항상 강의 잘 듣고있습니다! 복습 하다가 4번문제에 갑자기 헷갈리는 부분이 있어 질문드립니다. max_value = 0 a=0 b=0 for i in range(1, 99 + 1): j = 100 - i if max_value < i*j: max_value = i*j a = i b = j print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value)) 이런식으로 if 조건문을 for 반복문 내부로 넣지 않으면 최대가 되는 경우가 99*1=99인 결과가 나옵니다. 왜이렇게 나올까요?
파이썬의 조건문과 반복문은 해당 헤더(for i in range(1, 99 + 1) 또는 if max_value < i * i)의 다음 줄에 들어쓰기가 있는 부분에 작동합니다. 만약 현재처럼 if 조건문의 들여쓰기를 앞으로 당겨주시면, for 반복문에 if 조건문이 포함되지 않습니다. 따라서 for 반복문 모두 돌고나서 + if 조건문 부분이 따로 실행됩니다.
이게 설명보다는 한 번 결과를 보시는 것이 좋을 수 있어서 ``` for i in range(len(key_list)): ....print(key_list[i], value_list[i]) ....character[key_list[i]] = value_list[i] ``` 형태로 print() 함수로 어떤 값들이 들어가는 것인지 직접 확인해보는 것을 추천드립니다!
안녕하세요! 항상 연습코딩문제를 혼자서 답을 생각하지 않고 할때, 기호 ( ) , { } , 와 [ ] 이 세개의 기호가 언제 정확하게 써야 되는지 무척 헷갈립니다. 3개 모두 가 항상(?) 대체 가능하지 않을 것 같다는 제 작은 생각이 있지만, 너무 헷갈립니다 정리 해주세요 ㅜ ㅜ ㅜ ㅜ ㅜ감사합니다
선생님 질문드립니다 ! 파이썬을 통해서 차후에 데이터 분석 쪽으로 활용하고 싶어 현재 수강하고 있습니다. 1) 다름이 아니라 문제 풀이할 때 시간이 오래 걸리기도 하고, 가끔은 풀이와 다른 방법으로 답을 도출하기도 하는 데 이거 괜찮은건가요? (물론 풀이를 보고 다시 풀어보고, 이렇게 간단하구나 충격받고 반성합니다...) 2) 데이터 쪽 파이썬 활용 관련 서적이나 공부는 언제쯤 시작하는 게 좋을까요? 적어도 기초는 다 떼고 시작해야된다고 생각해서 수강 중인데, [혼자 공부하는 파이썬]의 내용만으로도 다른 분야(데이터, 크롤링 등)을 공부하는 데 무리가 없을까요?
좋은 강의 감사합니다! 코딩을 입문한지 얼마 안되었는데, 코딩 문제에는 제한 시간이 존재하는 것으로 알고 있습니다. 3번 while i*(i-1)/2 < limit: sum_value = i*(i+1)//2 i+=1 4번 if (i*j) >(a*b): a = i b = j max_value = a * b 혹시 이런 식으로 연산자가 복잡해지면 코드가 쌓이게 될 때 시간 차이가 많이 발생하는지 궁금합니다!
하다보니 이해됐네요.. for는 Range로 0,1,2,3를 넣어주는거고, while은 len으로 4를 가져오는거로 이해하면 될까요.. 근데 그냥 print(len(key_list)), print(len(value_list))이렇게 가져오게되면 int 자료형으로 가져오는건가요, range 는 어떤 자료형인지 궁금합니다. 그리고 for문 사용시에는 Range(len(key_list))를 넣어야하는데, While은 len으로만 해야 되더라고요. 제가 생각하는건 for문으로 range 함수를 넣으면 0,1,2,3이 앞의 변수로 들어가 는것이고, while문 len(key_list)라고 하게되면 i < len(key_list) 로 조건을 주게 되고, len(key_list)= 4이니까 4보다 작은 수 까지 돌리게 되고 , while문 안에 i +=1을 해줘야하는거같습니다. 제가 조금 헷갈 이해됐네요.. for는 Range로 0,1,2,3를 넣어주는거고, while은 len으로 4를 가져오는거로 이해하면 될까요.. 근데 그냥 print(len(key_list)), print(len(value_list))이렇게 가져오게되면 int 자료형으로 가져오는건가요, range 는 어떤 자료형인지 궁금합니다. 그리고 for문 사용시에는 Range(len(key_list))를 넣어야하는데, While은 len으로만 해야 되더라고요. 제가 생각하는건 for문으로 range 함수를 넣으면 0,1,2,3이 앞의 변수로 들어가 는것이고, while문 len(key_list)라고 하게되면 i < len(key_list) 로 조건을 주게 되고, len(key_list)= 4이니까 4보다 작은 수 까지 돌리게 되고 , while문 안에 i +=1을 해줘야하는거같습니다. 제가 조금 헷갈리는거같아 확인을 위해 길게 남겼습니다. 감사합니다.
1. range는 range라는 자료형입니다. 파이썬 또는 루비 같은 프로그래밍 언어에서 for 반복문을 위해서 만들어진 자료형입니다. 2. len() 함수는 무조건적으로 int 자료형을 리턴합니다. 3. for 반복문을 횟수와 조합해서 사용할 때는 range를 사용하는 것이 아예 문법적으로 되어 있어서, 설명해주신대로 for 반복문은 range로 0,1,2,3을 넣어주는 것입니다...!
확인문제 4번에서, for i in range(1,100) j = 100-j print(i*j) 이렇게하면 모든 곱셈 결과값들이 세로로 쭉 나오는데, 이걸 LIST 형태로 만든다음에, 다음 강의에 나오는 max함수를 이용하는 방법은 없을까요? 일단, 세로로 나열된 값들을, list 형태로 가로로 나열할 수 있는 방법이 있는지 궁금합니다.
print 함수의 end 키워드 매개변수를 따로 지정해주시면 됩니다. print(0, end=' ')처럼 하면 끝이 줄바꿈이 아니라 띄어쓰기가 됩니다. max 함수를 쓰셔도 결과는 나오지만 그냥 계산하면 되는데 - 리스트가 메모리를 차지하고 - 반복을 내부적으로 한 번 더 도니 바로 구하는 것을 추천드립니다(물론 공부용으로 만들어보시는건 당연히 좋습니다!)
드디어 이해의 막힘이 시작된거 같습니다.. 2번문제 자체가 이해가 안되네요... 46을 더할때 1000을 넘으며 그때의 값이 1035라는게 왜 그런건가요? sum_value < limit라는 것은 ...sum_value가 '0' 이니까 '1'씩 더해져서 999가 되면 종료된다는 것 아닌가요? ㅜㅜ 이해의 한계가 오네요
3번 문제에서 i가 sum_value 덧셈 연산 후에 증가하면서 sum_value가 limit를 넘을 때 더한 i값에 + 1한 값이 출력문에서 출력되는 것 아닌가요? i를 먼저 증가시키고 sum_value 덧셈 연산을 수행하는 것이 맞다고 생각이 들어서요 i를 1로 초기화 시켜준다면 sum_value를 1로 초기화시키고 while 반복문 안에서 i를 먼저 증가시켜주고 sum_value의 덧셈 연산을 하거나 i를 0으로 초기화시켰다면 sum_value도 0으로 초기화 시키고 while 반복문 안에서 i를 먼저 증가시키고 sum_value의 덧셈 연산을 하는 것 같은 모습으로요
확인 문제 3번에서 sum_value가 limit 보다 클 때까지 반복하라고 하면 "1을 더할 때 10000을 넘으며 그때의 값은 0입니다." 이렇게 나오는데 왜 그런 건가요?? 제가 쓴 코드가 while sum_value > limit: sum_value += i i += 1 print("{}을 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value)) 이렇게 썼습니다.
@@윤인성 limit = 10000 i = 0 sum_value = 0 while sum_value > limit: sum_value += i i += 1 print("{}을 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value)) 이렇게 만들었습니다
안녕하세요^^ 189쪽 4번 문제 질문드립니다. for i in range(1, 100, 1): j = 100-i i*j = k if k >= max_vlaue: a=i b=j max_vlaue=k 와 같이 결과값을 k라는 변수로 만들어서 처음에 답을 작성했습니다. (k 없이 연결해주는 것이 더 좋은 코드라는 것은 이해했습니다.) 다만 이렇게 출력하니 i*j = k 에서 SyntaxError: cannot assign to operator 가 나오는데 그 이유는 무엇일까요..?
딕셔너리에서 무언가를 추출할 때는 최종적으로 __값__을 넣어야 합니다. 예) character["무기"], character[1], character[true] 현재 코드에서는 변수를 통해서 간접적으로 값을 넣는 것이므로 예) ``` a = "무기" character[a] ``` 괄호에 따옴표를 붙이지 않는 것입니다. 만약 character["a"]를 해버리면, a라는 키를 추가하게 됩니다.
안녕하세요~ 저는 4번 문제에서 선생님께서 풀어주신 if max_value < i * j: 를 while max_value < i * j: 로 풀었는데 if를 쓰던, while을 쓰던 의미가 같으니 해당 구문에서는 무엇을 쓰던 상관없다고 생각해도 될까요? 물론 if는 조건문에서, while은 반복문에서 사용된다는 정도의 차이는 알고 있습니다!
한 번 반복될 것이라 예측되는 while 반복문은 if 반복문과 같은 동작을 합니다. 다만 내부적으로 코드 실행기가 while 반복문에 대해서는 - 조건 비교 - 이전으로 돌아가게 만드는 코드 를 작성하게 됩니다. 이때 "이전으로 돌아가게 만드는 코드"가 생각보다 굉장히 복잡합니다[이걸 가능하게 만들기 위해서 인류가 100년이 넘는 시간을 투자했으며, 지금도 최적화를 위해 수 많은 연구가 이루어지고 있습니다]. 그래서 조건문과 같은 동작을 하는 반복문이 있다면 조건문으로 작성해주는 것이 좋습니다! 현재 코드처럼 짧을 때는 상관 없지만 수 만 개의 데이터를 처리하는 큰 프로그램에서는 문제가 됩니다!
안녕하세요확인문제 4번에서이렇게 작성해봤는데 결과가 (99, 1, 2500)이 나오네요..꼭 a랑 b값을 설정해야 정답이 나오나요?max_value = 0 for i in range(1, 100): j = 100 - i current = i * j if max_value
4번문제를 이해하는 방법이 맞았나 싶어서 질문드려요!! max_value = 0이라고 선언해놨고, 4번문제의 코드에서 첫번째 값은 1*99=99이니 처음 계산에서 max_value는 99로 대체되고 그 다음 값인 2*98=196으로 또 max_value가 대체되고,, 이런 과정들을 다 진행한 후에 max_value가 2500이 나오는게 맞나요?
@@jaeyoungan536 코드를 i * j = max로 지정하시면, 왼쪽이 변수가 아니라 계산된 값인데, 값에 값을 넣고 있어서 오류가 발생합니다. . i * j > max의 경우는 문제가 없는 코드인데, 같은 오류가 뜬다면 저장을 안 하고 실행하신 경우로 생각됩니다![그래서 이전 결과가 출력되는 경우]
안녕하세요! 오늘도 강의 잘 들었습니다ㅎ 질문이 있는데요, 188쪽 3번 문제를 해설 듣기 전에 풀어보다가 짠 코드에 컴퓨터가 이상하게 반응(?)했습니다. 먼저 제가 짠 코드에요! limit = 1000 i = 1 sum_value = sum(list(range(0, i, 1))) while sum_value limit: print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i-1, limit, sum_value)) break 이렇게 했더니 visual studio code에서도 그렇고 google colab에서도 그렇고 결과가 재깍 나오지 않고 오래 걸리더라고요. 결국 결과도 보지 못하고 ctrl + c로 강제 종료했습니다. 왜 이런 일이 생겼을까요? 궁금해서 여쭤봅니다. 감사합니다!
선생님 안녕하세요! 2번 문제 질문드립니다 for key in key_list: print(key) for value in value_list: print(value) character=print("{}:{}".format(key,value)) print(character) 라고 식을 적었을때는 왜 정답이 나오지 않는 걸까요?
maximum = 0 i = 1 j = 99while maximum < i * j: maximum = i*j i += 1 j = 100-i print("최대가 되는 경우 : {} * {} = {}".format(i, j, maximum))이렇게 하면 답이 최대가 되는 경우 : 51 * 49 = 2500이 나오는데 어떻게 수정해야될까요?
최대값보다 커지는 순간(maximum < i * j)에 while 반복문이 벗어나버려서, maximum, i, j를 할당하는 코드가 실행되지 않아서 발생하는 문제입니다. 1. "다음 단계가 원하는 조건일 때"로 구분하시면 되는데, maximum < (i + 1) * (100 - (i + 1))" 형태로 사용해주시면 됩니다. 다만 이 코드는 반복을 돌 때 쓸데없는 연산이 일어나므로 2. 코드가 왜 그런지 알고 있으므로, "벗어난 뒤에 한 번 더 연산해주면 되겠다"하는 형태의 코드를 사용하는 것이 좋습니다. 반복문을 벗어난 뒤에 i += 1과 j = 100 - i 등을 그냥 한 번 더 계산해도 괜찮습니다.
4-3절 확인문제 4번에, max_value, a, b에 대한 초기값과 관련된 질문인데요. a,b라는 변수를 선언해주지 않고, 바로 i,j를 사용하여 소스를 구성할 수는 없는건가요? P.S. 이 문제에서는 하위 print함수 부분에 format함수에 a,b가 명시되어있어 a와 b를 당연히 써야한다고 생각은 했습니다만....
3번 문제 문의드립니다. 실행결과에 '142를 더할 때 10000을 넘으며 그때의 값은 10011입니다.' 라고 하는데 142가 아닌 141을 더할 때 10011이 되네요. limit = 8로 해서도 해봤는데 '5를 더할 때 8을 넘으며 그때의 값은 10입니다.' 라고 나오는데 5가 아니라 4 아닐까 해서 여쭤봅니다.
3번문제질문입니다 while sum_value < limit : sum_value += i i += 1 print("{}를 더할때 {}을 넘으며 그때의 값은 {}입니다".format(i,limit,sum_value)) sum_value 에다가 1을 대입하면 안되는건가요?
정민형 처음에 1을 대입하면 이후에 다 더한 값이 1 추가되서 나오게 됩니다...! 일반적으로 초기값은 "앞으로 어떤 연산을 할 때 그 연산에 영향을 주지 않을 값"으로 설정합니다. 그래서 - 더하기 빼기: 0으로 초기화 - 곱하기 나누기: 1로 초기화 이외에도 - 배열 연산: 단위 행렬 등으로 초기화 하기도 합니다.
4번 문제에서 (동영상 6:23 ~) if max_value < i * j : max_value = i * j 이렇게만 해도 i * j의 최대값이 구해진다는 부분이 도저히 이해가 가지 않습니다. 6:36 에서 예전에 풀어본 거라서 자세히 설명하지 않겠다고 하셨는데 다른 질문에서 보듯이 예전에 풀어본 게 아니라서 이해하기에 어려움이 있습니다. 자세한 설명을 적어주시면 감사하겠습니다. ^^
최대값을 구하는 코드를 설명을 앞에서 깜빡했는데[그래서 마지막 강의 마지막 부분에서 설명합니다 😭]. 기본적으로 어떤 대상들을 훑으며 """ If 방금 본 것보다 큰게 있으면 Then 그게 큰거다 """ 라는 코드를 사용하면 최대값을 찾습니다 [10, 20, 50, 27, 5]라는 리스트가 있을 때 각각의 요소에 위의 처리를 직접 눈으로 해보시면 대충 최대값이 왜 구해지는지 이해하실 수 있을 것입니다. 그걸 응용해서 i*j의 최대값을 구하는 것이 4번 문제입니다.
선생님 항상 잘보고있습니다~! 한가지 걱정이 있어 글 남깁니다.
for문 들어오고 나서 확인문제는 거의 틀리고만 있습니다.
이거 포기해야하는 건가요?
아닙니다. 외우시면 됩니다.
참고로 현재 파이썬 강의는 개정판 강의가 2배 더 길게 녹화되어 있어서 그쪽 보시는걸 추천드림니다!!
강의에 대한 열정과 그 코딩 관련 지식에다가, 2년이 넘은 동영상에 최근 댓글까지 답변달고 계신걸 보고 놀랐습니다.
어쩌다 들었는데 정말 귀에 쏙쏙 들어오고 평소 문의를 가졌던 부분에 대한 설명까지 빠트리지 않으시니
기존에 다른 유투버를 따라 공부하던 HTML, Javascript 다 중단하고 선생님 강의로 바꿔듣고 있는데 정말 좋네요.
책 안사고 공부하고 있었는데, 나중에라도 참고할 수 있게 책을 사는게 낫겠다는 생각이 들게 하십니다.
정말 감사하고 있습니다.
아래 질문들을 보니 저와 비슷한 질문이 많네요.
3:30에 1에서 46까지 더하면 1000을 넘는다고 하셨는데, 제가 한 수식에선 1에서 45까지 더하면 이미 1035입니다.
(엑셀로 검산을 해도 마찬가지, 1+2+3+..+45=1035로 나옵니다.)
j와 i 중 어떤 것을 먼저하느냐 차이인 것 같은데요. i를 나중에 하게 되면 이미 1000을 넘었는데 다시 1을 더하게 되지 않나요?
가이드 부탁드립니다.
i = 0
j = 0
while j
넵 오탈자입니다 😂...!
추가 인쇄 때 수정되었는데 과거 책과 강의에서는 수정되지 않았습니다! 다 하고 1을 빼야 합니다!
@@윤인성 아, 이미 업데잍트 된거였군요. 아무데도 정정 표시가 없길래 .. 수정이 안되나 보네요.
그나 저나 정말 대단하시네요. 하루 일과가 어떠신지 궁금할 정도로 부지런하시군요.
답변 감사합니다.
감사합니다 항상
앗 현재 파이썬 강의는 개정판 강의가 진행중인데
- 그쪽이 훨씬 자세하고[훨씬 자세하고 + 책에 없는 내용들도 다룹니다!]
- 곧 강의 완료되면 개정 이전판 강의는 비공개로 돌릴 것이라
→ 개정판 강의를 참고해주세요!
@@윤인성 헉 .. 제가 2019년도 책을 보면서하고있는데 개정판강의가올라오면 책내용도 다른가요 ㅠㅠ?
@@뮴-w8e 개념 몇 가지와 문제만 추가되어 있는데, 대부분은 비슷하게 진행하실 수 있습니다!
@@윤인성 감사합니다 예전책이지만 잘보고배우겠습니다
@@윤인성 혹시 파이썬 관련 문제풀이같은건 알고리즘풀이책 같은거 사면되는건가요?
max_value = 0
a =0
b= 0
for i in range(0,99+1):
j= 100 - i
if max_value < i*j:
max_value= i*j
a=i
b=j
print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value))
******************************************************************************************************
if max_value < i*j:
max_value 가 i*j 보다 작아야하는 이유가 있을까요?
최대가 되는 경우를 찾고 있으니까요!
짱
2번문제에서 character[key list(i)] 이부분이요 key list 앞엔 character가 들어가는데 뒤에 value list 앞엔 왜 character가 안붙나요?? 그리고 key list [[i]] i부분이 소괄호가 아닌 대괄호를 넣는이유는 리스트라서 그런건가요??
코드를 잘못 확인하신 것 같은데 다시 확인해주세요!
또한 key list와 value list가 아니라 key_list와 value_list 인 것도 확인해주세요!
key=["q","w","e","r"]
value=["a","b","c","d"]
chara={}
for i in range(4):
chara[key[i]]=value[i]
print(chara)
---------------------------------
여기서 chara[key[i]]=value[i] 이부분이 이해가 잘안되는데요 선생님
그러면 첫번째로 chara[q]=a
이렇게 나올텐데
딕셔너리 구문에서는 chara["q"]="a"
이렇게 큰따옴표가 있어야지 딕셔너리에 요소를 추가하는 바른문장아닌가요?
잘못된문장같은데 컴퓨터는 어떻게 인식을하고 딕셔너리에 요소를 추가하는건가요?
일단 딕셔너리는 숫자, 문자열, 불, 튜플을 키로 가질 수 있습니다. 따라서
{ true:10, 10:20 } 등도 가능합니다.
이어서 변수를 넣으면, 변수 내부의 값을 사용하게 됩니다.
a = "안녕하세요
dicta = {}
dicta[a] = 10
하면 { "안녕하세요": 10 }이 됩니다.
[a가 문자열이므로 문자열이 저렇게 들어갑니다].
두 가지를 생각해보시면서 코드를 다시 살펴보시면 쉽게 이해하실 수 있을 것 같습니다!
마지막 강의에서
for i in 목록:
if i < 최소값:
최소값=i
if i > 최대값:
최대값=i
라고 하셨는데요. 위의 최대값처럼 > 표시를 넣으니 0 이나오더라구요. 왜인가요? 위 공식에서 최소값과 최대값을 구하는 공식이 맞는데 왜 마지막 문제의 결과값이 다르게 나오는건가요?
어떤 코드를 작성하셨는지 전체 코드를 올려주실 수 있을까요!
선생님 3번문제 풀다가 막히는 부분이 있어 질문드립니당..
처음 문제를 보고
→ i를 while반복문 이용해서 증가시켜줌
→ 증가시켜줌과 동시에 sum_value변수에 계속해서 더해줌
→ sum_value > limit 일때 break문 사용해서 끊어줌
이렇게 풀어봐야겠다 생각을해서
limit = 1000
i = 1
sum_value = 0
while True:
sum_value + i
i += 1
if sum_value > 1000:
print(sum_value)
break
print("{}를 더할때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value))
이렇게 작성해봤는데..
오류인지 실행이 안되는거 같더라구요..
어느부분을 수정해야할지 감이잘안잡혀서 질문드립니당..
실행이 이루어지지만
반복문 내부에 sum_value의 값을 수정하는 코드가 없으므로 [+= 등을 사용해주셔야 합니다]
if 안으로 절대 들어가지 않아서 반복문을 벗어나지 못하는 상태입니다!
@@윤인성 아.. 그래서 while문 밖으로 나가지못하는거였군요.. 이제 보니 터무니없는 코드였네용..ㅠㅠㅠ 감사합니다.. 덕분에 이해가 잘됬어요..!
안녕하세요 좋은 강의 너무 잘 듣고 있습니다. print의 들여쓰기에 대해 궁금한 것이 있어서 여쭙습니다.
for i in range(0,100):
j = 100 - i
# 최대값 구하기
if max_value < i * j:
a = i
b = j
max_value = i * j
print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value)) -->>> 이렇게 하는 경우에는 50 * 50 = 2500 한 문장만 출력되는데
for i in range(0,100):
j = 100 - i
# 최대값 구하기
if max_value < i * j:
a = i
b = j
max_value = i * j
print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value)) -->>> 이렇게 하는 경우에는 1부터 50까지 50개의 문장이 출력이 됩니다.
제가 이해하는 바로는 아래 코드의 경우에는 if가 참일 때의 모든 경우에 대해 print가 작동하므로 50개의 문장이 다 나오는 것은 이해가 되는데
정답 코드에서는 한 줄만 출력 되는 이유는 뭔지 궁금합니다. 저런 경우에는 마지막으로 if가 참인 마지막 값만 받아서 그런 것인지 아니면 다른 이유가 있을지 여쭙습니다(if 구문의 규칙 같은 것인지도 궁금합니다). 항상 감사드립니다.
if 조건문과 for 반복문은
해당 구문 다음에 있는 __들여쓰기기로 만들어진 블록__에 적용되기 때문입니다.
너무 쉬운 질문인가 싶긴한데요 ㅠ 3번에서요!!
while sum_value < limit:
이 줄에서요 1000되기 직전 값에서 출력되어야 하는 거 아닌가요? ㅠㅠ sum_value 가 limit인 천보다 작을 때 반복인데 1035에서 마지막으로 출력되고 마무리되는 것이 이해가 잘 되지 않아요 ㅠ
지금 생각하시는 그대로 맞습니다 ;ㅁ; ...! 강의 실수입니다!
@@윤인성 아 그렇군요!! 답변 감사합ㄴ디ㅏ 혼공파 잘 공부하고 있어용 ㅎㅎ
질문있습니다. 마지막 문제에서 1 2 3번 줄의 의미가 궁금해요 왜 최댓값과 a b를 0으로 설정하면서 시작하는건가요?
차근차근 “더 큰 수로 변경하면서 최대값을 찾는 형태”이므로, 처음에는 “나올 수 있는 수들보다 작을 것이라 예상되는 값”으로 초기화했습니다!
4-3번 문제 질문이 있습니다. 알려주신대로 for 구문과 if 구문을 작성하고 나면 숫자가 50이 될때까지는 for구문과 if 구문이 모두 실행되고 그 이후부터는 if 구문은 실행되지 않고 for 구문만 실행되어 99까지 다 돈 후에 출력된다고 이해하면 맞게 이해한건가요?
넵 맞습니다!
limit = 10
i = 1
sum_value = 0
while sum_value < limit:
print("{}번째 반복입니다.".format(i))
print("{}를 더할 때 값은 {}입니다.".format(i, sum_value))
sum_value += i
i += 1
제가 (이해가 쉽지 않아서) 위와 같이 코드를 바꿔 보았는데요.
1번째 반복입니다.
1를 더할 때 값은 0입니다.
2번째 반복입니다.
2를 더할 때 값은 1입니다.
3번째 반복입니다.
3를 더할 때 값은 3입니다.
4번째 반복입니다.....
실행 시에 위와 같이 나타나는데 여기서 1번째 반복의 sum_value 가 '0' 이 되는 것이 이해가 가지 않습니다.
sum_value '0' 에서 시작하여 += 1씩 증가하도록 입력하였는데 어째서 '0' 이 되는 걸까요? ^^;;;;;;;;
이후에 오탈자 수정이 된 부분인데, 출력을 sum_value += i와 i += 1 부분에서 해주셔야 합니다! 마지막에 한 번 출력할 때는 i를 1 빼고 출력합니다!
선생님! 매일 재밌는 강의 잘 듣고있습니다.
4번 최대, 최소값 구하는 문제 마지막 강의 보고 왔는데 이해가 안되서 질문 드립니다.
max_value = 0
a = 0
b = 0
for i in range(1, 100, 1) :
j = 100 - i
if max_value < i * j :
max_value = i * j
a = i
b = j
print("최대가 되는 경우 : {} * {} = {}".format(a, b, max_value))
위의 코드에서 if문부터...
max_value = 0 이고 연산(i * j 의 연산 1 * 99 부터 시작해서 99 * 1까지) 된 모든 수는 max_value 보다 큰 수이기 때문에 참인데 그 결과값 중에서 50 * 50 = 2500이 가장 큰 값임을 어떻게 찾아내는지 이해가 안됩니다.
몇번 째 줄의 코드가 이 중에 50 * 50 이 가장 큰 수임을 확인하는 줄인가요?
제가 어떤 부분을 착각하고 있는지 잘 모르겠습니다.
한줄기 빛을 내려 주세요!ㅠㅠ
모든 수가 참이 아닙니다!
1*99 ~ 50*50까지는
99, 196, ..., 2500까지 쭉 올라가면서 계속 True로 나오겠지만,
51*49로 역전이 나는 순간부터 2499로 False가 됩니다(2500 < 2499가 False).
그래서 최대값이 구해집니다!
@@윤인성 이제 이해했습니다. 또 착각하고 있었어요. 선생님 감사합니다!
@@윤인성 다음 강의 듣는 분들은 문제 풀어보고 이해 안면 for문에 j = 100 - i 코드 밑에 print(max_value) 붙혀봐도 이해하는데 도움 될 거 같아요... 분명 앞에서 배운건데, 잊어버리네요..하하..
안녕하세요 혼공파 책 보면서 공부중인데 기본개념 설명은 어느정도 이해는 되는데 진짜 확인 문제의 난이도는 기본개념에 비해서 난이도가 너무 갑자기 훅 뛰는 느낌입니다. 해설 강의를 봐도 기본개념에 설명도 없는걸 바로바로 적용하는 느낌이구요 책 자체는 기본 개념 이해는 잘되서 좋다면 확인 문제만 풀면 진짜 뭐가 뭔지 하나도 몰라서 좌절스러운데 지금 제가 느끼는 학습과정이 정상인가요? ;; 아니면 책의 원래 의도인가요? ;; 암튼 확인문제는 이해가 도저히 안되서 따라해보기만 하는데 이렇게 지나가도 되는건가요?
넵 정상이라고 보시면 됩니다. 어렵게 느껴지지 않고 조금 생각해서 다 풀리는 문제는 풀 필요가 없는 문제라고 생각해서, 문제는 초급 초중급 사이의 문제를 넣었습니다.
책이 대학교 한 학기 과정 정도이고
+ 대학에서도 한 절의 문제를 한 주에 풀어오라고 하는 식이므로
= 시간을 오래 잡고[한 문제에 2-3일], 풀어보시는걸 추천드립니다.
PS. 반복문과 함수 쪽만 어려운 편이라, 이쪽의 문제들은 한 주에 한 절 확인문제 풀어오는 것이 과제로 나오고 있습니다.
조금 생각해보고 안 풀리는 경우, 답지를 보고 외우셔도 상관 없습니다[원래 첫 걸음은 답지를 어느 정도 외우는 것이 좋다고 생각합니다]!
또는 강의 들으면서 한 번 보고 2-3일 후에 다시 풀어보는 형태의 공부도 좋습니다!
안녕하세요
다름이 아니라 188페이지 2번문제를 혹시
key_list=["name","hp","mp","level"]
value_list=["기사",200,30,5]
character={}
i=0
for key in key_list:
character[key]=value_list[i]
i+=1
print(character)
이렇게 풀어도 {'name': '기사', 'hp': 200, 'mp': 30, 'level': 5} 값이 나오는데
혹시 이렇게 풀어도 무관한가요??
+
4번 문제
max_value=0
a=0
b=0
for i in range(1,100):
j=100-i
if max_value
(1) 어떻게 푸셔도 현재 정도 단계는 답만 나오면 아무 상관 없습니다!
(2) 파이썬에서는 사실 큰 상관은 없습니다!
다만 원래 대부분의 프로그래밍 언어는
변수를 선언한 단계[들여쓰기] 아래에서만 변수를 사용할 수 있습니다.
즉 다음과 같은 코드는 작동하지 않습니다.
```
for ...:
a = 10 # 들여쓰기 안쪽에서 선언했는데
print(a) # 밖에서 사용
```
다만 파이썬은 이런 코드가 문제 없이 동작합니다.
근데 이게 일반적인 개발자의 인식에서 생각하기에 이해가 잘 안 되는 코드이고
+ 파이썬도 나중에 함수 등으로 넘어갔을 때
위와 같이 코드를 작성하면,
대체 이 변수가 어디에서 온 녀석인지
이해하기 힘들어지는 문제가 생깁니다.
그래서 일반적으로 다음과 같이 씁니다!
```
a = 0 # [변경]
for ...:
a = 10
print(a) # 이 단계에서 사용하니, 적어도 이 들여쓰기 단계에 변수가 선언되었어야 한다.
```
안녕하세요!
확인문제 4번 아래 코드에서
for i in range(1, 99 + 1)
j = 100 - i
# i = 1, j = 99 ...
if max_value < i * j:
# 0 < 1 * 99 = 99
max_value = i * j
a = i
b = j
max_value 변수의 값을 0으로 처음에 지정을 하였는데 그렇게 되면 if 구문에서 i * j 가 처음부터 참으로 성립되어 위 for 반복문 코드에 따라 모든 값이 다 출력되어야 하는게 아닌가요?
돌머리라 아무리 생각해도 이해가 안됩니다.. ㅠ
참이라서 계속 저장하다가 50*50부터 false가 뜨면서
→ 이때 값으로 정지됩니다!
limit = 10000
i = 1
sum_value = 0
while True:
sum_value += i
i += 1
if sum_value > 10000:
break
print("{}를 더할 때 {}을 넘으며 그떄의 값은 {}입니다.".format(i-1, limit, sum_value))
3번 문제 이렇게 했는데 답이 142나오네요.. 이렇게 하면 틀린걸까요?
어떤 부분이 틀렸다고 생각하는지 알 수 있을까요? 그래야 더 정확하게 답변 드릴 수 있을 것 같아서요!
@@윤인성 아 답을 잘못썻습니다 141나와서 틀린거 아닌가 생각해서 질문드렸습니다!
여쭤볼게 있습니다. 파이썬을 혼자 공부 하고 있는데 확인 문제를 푸는데 있어서 점점 어려워 지네요 충분히 고민하는 시간을 가지고 있긴 하지만 막상 풀기가 어려운 것들이 점점 늘어나는데 강의를 보면서 이해하고 복습하는 식으로 공부를 하는것이 도움이 될까요...?
넵 일반적으로 대학교 과정으로 2년 정도[기본 언어, 알고리즘, 자료구조 정도]는 전부 암기 과목이라고 보셔도 됩니다.
@@윤인성 그러면 확인 문제가 막히면 다음 강의를 보고 해결한뒤 복습하는 방법으로 해도 되겟네요 감사합니다
안녕하세요. 강의 잘 듣고 있습니다.
6:37에서 이것은 예전 확인 문제에서 다뤘기 때문에 자세하기 다루지 않는다고 하셨는데... 어느부분인지 기억이 잘 안나네요..ㅜㅜ
죄송하지만 질문드리겠습니다..
max_value < i *j: 보다 작은것을 max_value = i * j에 넣었는데 왜 최대 값이 나오는지 이해가 안되네요.
앗.... 이게 내용을 안 다루었더라구요 ;ㅁ; .... 가장 마지막 강의에 추가 설명을 넣었습니다!
@@윤인성 감사합니다ㅎㅎ
안녕하세요 저는 3번 문제 답을 이렇게 했어도 나왔는데요
limit = 10000
i = 1
sum_value = limit + 11
while i < 143:
i += 1
저는 이렇게 해도 답이 나오긴 했는데 이왕이면 알려준 답대로 하는 게 좋나요?
아닙니다. "답이 나오고, 그 답에 대한 설명이 가능하다"라면 어떤식으로 해도 상관 없습니다.
다만 현재 코드는 이러한 설명이 불가능합니다.
"몇을 더할 때 10000을 넘는가?"를 찾는 문제인데
(1) 어떻게 갑자기 "143"이라는 숫자를 등장시켰는가?[답을 바로 찍었는가?]
(2) 왜 11을 더했는가?
로 """답을 모른다고 가정하고
답을 구하는 코드를 작성해야 하는 것인데
이미 답을 알고 있을 때만 구현할 수 있는 코드"""를 만드신 것이라서
"답에 대한 설명"이 불가능합니다.
그래서 현재 코드는 "문제를 푸는 코드"라고 할 수 없습니다.
참고로 현재 파이썬 강의는 개정판 강의가 있으므로
그쪽을 보시는걸 추천드립니다![강의를 2배로 늘려 좀 더 자세히 설명합니다!"]
@@윤인성 알려주셔서 감사합니다.
확인문제 3번을 For 구문을 이용하여 코드를 진행하면 에러가 발생하는데 이유가 먼지 알수 있을까요?
limit = 1000
i = 1
sum_value = 0
for sum_value in range(1000):
if sum_value < limit:
sum_value += 1
i += 1
else:
print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다".format(i, limit, sum_value))
Error message: File "C:\Python_Boreum\ex.py", line 24
print("{}를 더할 때 {}을 넘으며 그때의 값
은 {}입니다".format(i, limit, sum_value))
IndentationError: expected an indented block
Indentation error 들여쓰기 오류입니다. else 다음 줄에 들여쓰기가 없어서 그렇습니다. 돌려보시면 논리적 오류[실행은 되지만 원하는대로 실행되지는 않는 것]이 있으실 것입니다!
안녕하세요? 2번에서 짠 제 코드를 실행하면 결과가 다르게 나오는데 이유 설명 부탁드립니다. (결과: {'name': 5, 'hp': 5, 'mp': 5, 'Level': 5})
keylist = ["name", "hp", "mp", "Level"]
valuelist = ["Knight", 200, 30, 5]
character = {}
for i in range(len(keylist)):
for j in range(len(valuelist)):
character[keylist[i]] = valuelist[j]
print(character)
한 번 "character[keylist[i]] = valuelist[j]"라는 코드 위에
print(keylist[i], valuelist[j])를 넣으셔서
어떤 키에 어떤 값이 들어가는지 확인해보시면 쉽게 이해하실 수 있을 것이라 생각합니다!
참고로 현재 혼자 공부하는 파이썬은
개정판 강의가 있습니다.
훨씬 자세하고 내용도 기니(2배 분량),
강의는 개정판 강의를 보시는걸 추천합니다!
어...어렵다아!!!! 그래도 괜찮습니다 외울거거든요..!!!!😉✌🏻 코드 틀릴 때 요즘 제 머리도 오류코드가 뜨는거 같습니다...🤔
기초 공부는 모두[사실 대학교 때 과정에서 배우는 것 정도도 모두], 외우는 것이라 생각하고 외우면 편합니다!
@@윤인성엄청나게 위로가 됩니다아!!!!ㅠㅠㅠㅠ 열심히 외울게여!!😭 강의 정말 감사합니다! 🙇
188 페이지 3번 문제에 format에 왜 i-1이라고 해야하는지 이해가 잘 안됩니다
422페이지 답지에는 그냥 i로 나와있던데 뭐가 맞는건가요?
1을 빼야 합니다!
[책 초판에 저도 헷갈려서 오탈자를 냈습니다 😂]
.
마지막 while 반복문을 보면
1. sum_value += i로 10000을 이때 넘는데
2. 그 다음 줄에서 i += 1로 1을 더합니다.
3. 그리고 while sum_value < limit 조건이 False라서 탈출하는데
.
여기에서 불필요한 2번 과정이 생겨서
이걸 다시 빼줘야 합니다![141을 더할 때 10011이 됩니다]
기초적인 것일수도 있지만 += 연산의 의미가 무엇인가요?
sum_value += i 라고 하면
처음에는 sum_value + i = ? , 두번째에는 (sum_value + i ) + i = ? 세번째에는 ((sum_value + i) + i ) + i = ? 인가요?
그리고 여기서 물음표로 표시해둔 = 다음도 정확하게 뭔지 잘 모르겠습니다 ㅠㅠ
변수 += 숫자
→ 변수 = 변수 + 숫자
입니다.
감사합니다
limit = 1000
i = 1
sum_value = 0
for i in range(0, limit):
sum_value += i
if(sum_value > limit):
break
print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value))
limit을 1000일 때,
PS C:\JavaStudy\python\혼자공부하는파이썬> python test.py
45를 더할 때 1000을 넘으며 그때의 값은 1035입니다.
limit을 10000으로 바꿨을 때,
PS C:\JavaStudy\python\혼자공부하는파이썬> python test.py
141를 더할 때 10000을 넘으며 그때의 값은 10011입니다.
해당 코드는 문제가 있는건가요? 1000일 때는 45로 나오네요.
break 걸어서 나오게되면 i가 46일 때 1000을 넘으니까 종료되어서 46으로 올라가지 않는건가요?
Jay Chung 어떤 것을 예상하셨는데 어떻게 나와서 잘못되었다고 생각하시는지 조금 더 자세하게 설명해주실 수 있을까요?
@@윤인성 아 제가 작성한 코드에서는 sum_value가 1000이 넘을 때, i 값이 45가 나왔는데요. 강의해주셨던 while문에서는 46이 나와서요. 제가 잘못생각했네요. for문에서 break를 걸면, i값이 1증가한 반복문이 종료되어 버리니까 i 값이 46이 아니라 45가 되는건데 착각했습니다. 답변 감사합니다 :) 강의해주시는 영상이 많은 도움 됩니다 ㅎㅎ
강의 잘 듣고 있습니다. 4번문제 답이 나오는 논리가 for i in range(1,100) 반복문을 돌려서 max_value < i*j 일때,
Max_value = i*j 이고
a = i b= j 로 선언한다.
그래서 계산을 해보면
i =51 j = 49일때 if 문 을 적용하면
이전 maxvalue는 50 *50 으로 i*j보다 커서
더이상 밑의 if조건문이 실행 안되고
A=50,b=50 max_value =2500으로 종료 되는건가요?
넵
선생님! 강의 잘 들었습니다. 그런데
for i in range(1, 100):
j = 100 - i
if max_value < i * j:
max_value = i * j
print(max_value)
이렇게 코딩했을때는 2500 하나밖에 출력을 안하는데(max 함수도 안썼는데 말이죠!) 왜 들여쓰기해서
for i in range(1, 100):
j = 100 - i
if max_value < i * j:
max_value = i * j
print(max_value)
이렇게 출력하면 모든 곱한 값이 출력될까요? 가르쳐주시면 감사하겠습니다 ㅠㅠ
들여쓰기를 넣으시면 해당 print 함수 구문이 반복문 내부로 들어갑니다. 따라서 반복 횟수만큼 and 조건문이 적용되면 계속 실행됩니다ㅡ
선생님 명강의 다시 정주행중인데 정말 잘 가르쳐주셔서 감사합니다
2번문제에 간단한 질문이 있는데
key_list= [1, 3, 2,4 ,5]
value_list=["a", "b", "d", "c", "e"]
character= {}
for i,j in key_list,value_list:
character[i]=j
print(character)
혹시 이런 코드를 사용하면 반복문이 실행되지 않던데 이유를 알 수 있을까요?
문자열 기호는 생략하고
([1,3,2,4,5], [a,b,c,d,e])로 반복을 돈다니
첫 번째 반복은 [1,3,2,4,5]
두 번째 반복은 [a,b,c,d,e]로 돌려고 시도하는데
각각의 것은 요소가 5개이므로 i,j에 들어가지 않습니다. 그래서 반복을 안 돕니다.
감사합니다.
4-3번 문제에서 10000을 넘는 경우가 10000이상을 말하는 건가요?? limit에 10001을 넣어줘야 되는 거 아닌지 해서요! 만약 합이 10000이면 그 다음번까지 넣어서 10000을 넘겨야 되는거 아닌가요?? 강의 너무 잘듣고 있습니당. 감사합니다!
넵 말씀해주신 부분이 맞습니다 ;ㅇ; ...! 오탈자 설명 실수입니다 ;ㅇ; ...!!
질문있습니다!
3:42부분에서 while문에서 마지막 True가 나올때, 그때까지 더한 숫자가 1035인데,
그때의 숫자는 46을 더할 때가 아니라 45를 더할 때가 맞는 것 같습니다(그 숫자를 더하고 나서도 sum_value += i 밑에 i += i가 있으므로..)
계산을 해보니까 46까지 더하면 1081이 나옵니다(교재도 그렇습니다!).
그럼 올바르게 답이 나오게하려면 처음에 i를 0으로 지정해두고, sum_value += i줄과 i += 1줄을 바꾸는 수밖에 없는 건가요?
다른 간단한 방법이 있으면 알고 싶습니다!
감사합니다.
넵 오탈자입니다 흑흑....
프로그래밍에는 정확한 정답이라는 것이 없습니다...! 다른 댓글들을 보시면 관련된 내용들이 있는데, 다른 분들의 생각들도 한 번 보시면서, 내 생각이 내가 생각하기에 더 간단한지, 다른 사람 생각을 채용해보는 것이 좋은지 등을 직접 생각해보시면 좋을 것 같습니다...!
윤인성 답변 감사드립니다!
안녕하세요! 4번문제 질문드립니다.
1)
for i in range(1, 100):
j = 100 - i
if i*j > (i+1)*(j-1):
break
a = i
b = j
max_value = i*j
선생님이랑은 다르지만 저는 이렇게 풀어서 답이 50*50 = 2500로 나왔는데요.
2)
for i in range(1, 100):
j = 100 - i
if i*j > (i+1)*(j-1):
break
a = i
b = j
max_value = i*j
이렇게 a, b, max_value를 for문안에 들여쓰기하면 49*51 = 2499로 잘못된 답이 나오더라구요.
break를 했는데 왜 들여쓰기만으로 이런 결과가 나오는지 알 수 있을까요??
들여쓰기가 다르몈 블록의 구분 자체가 달라집니다. 파이썬은 들여쓰기에 따라 해당 코드가 for 반복문 내부에 있는지, if 조건문 안에 있는지 자체가 달라지므로 "들여쓰기 만으로" 정도가 아니라, 들여쓰기가 다르면 "아예 그냥 완전히 엄청나게 다른 코드"가 됩니다.
음.. 강의해주시는걸 듣고 코딩하면 이해가 가는데 혼자서는 손가락들이 키보드위를 방황하네요...
그런 과정이 반복되다보면, 점점 더 발전하실거예요!
@@윤인성 감사해요~!
혼공파 책을 사서 공부중인 사람입니다. 4절을 다 보고, 다시 한 번 더 보고있는데도 확인문제가 명쾌하게 안 풀려서 고민입니다. 원래 좀 이런건가요? 아님 제가 더 공부를 해야할까요?
저도 좀 어려워서 일단은 뒤로 넘어갔습니다..
2번 문제 질문 드립니다
for a in range(4) :
character[key_list[i]] = value_list[i]
print(character)
이 코드를 조금 하나하나 해석하려는데 잘 안되더라고요 ..순서대로 해석해보는것이요
일단 a 에다가 반복 4번을 하고 나열 한다는 뜻 으로 해석했고요....
character[key_list[i]] = value_list[i]
이거는 이제 a에다가 반복할 코드이고 반복시 i 에다가 0,1,2,3 이렇게 입력된다는걸로 해석을 했습니다
마지막 문장 print(character) 가 살짝 이해가 안가는데 지금까지 쌓는건 a 에다가 쌓았으니까 print(a) 를 해야하는 것이 아닌가..라는 생각이 조금 들어서요 ㅜ 제가 놓친부분은 어느부분일까요
질문도 지금 제대로 못하겠네요 질문할것도 두루뭉실하게 머릿속에서 정리가 잘 안되는것 같습니다 ... 아는것이 없어서 이런가 ㅜ
위의 코드는 오류가 발생합니다!
for i in range(4):로 해주셔야 i에 반복 변수가 들어갑니다.
print(character)의 경우는 딕셔너리 전체를 출력하는 코드입니다![character가 딕셔너리이므로]
제가 잠시 수술을 받고 오느라 정신이 없어서 답변이 늦어져서 죄송합니다 @_@ !
2번 문제 질문 있습니다 ㅜㅠ..
1. 왜 character[key_list[i]] = value_list[i] 를 하면 character 딕셔너리에 키가 생성되는것 인가요?
2. 어떻게 character 이라는 딕셔너리에 key_list라는 키가 없음에도 character[key_list[i]] = value_list[i] 라는 코드를 사용 할 수있는 건가요?
3. 만약 dict 라는 딕셔너리에 a라는 키와 value1이라는 값이 있고 b라는 키와 value2 라는 값이 존재한다면 for key in dict 에서 key의 역할은 a와 b를 한번씩 받고 dict[key] 를 하면 value1과 value2 라는 값들이 출력되는 것이라고 이해했는데 제가 이해한 부분들이 옳바른가요? 틀리다면 정정 부탁드립니다.
질문이 많아 죄송합니다. 계속 고민하다 답답하여 질문드립니다.
앗 답변을 못 했었군요 ;ㅁ; ...!
- 1번: 그냥 값을 넣어버리면 딕셔너리에 키가 생성됩니다.
- 2번: 1번과 마찬가지입니다.
값을 꺼낼 때만 키가 기존에 있어야 합니다.
3번도 맞습니다...!
안녕하세요 항상 강의 잘 듣고있습니다! 복습 하다가 4번문제에 갑자기 헷갈리는 부분이 있어 질문드립니다.
max_value = 0
a=0
b=0
for i in range(1, 99 + 1):
j = 100 - i
if max_value < i*j:
max_value = i*j
a = i
b = j
print("최대가 되는 경우: {} * {} = {}".format(a, b, max_value))
이런식으로 if 조건문을 for 반복문 내부로 넣지 않으면 최대가 되는 경우가 99*1=99인 결과가 나옵니다. 왜이렇게 나올까요?
파이썬의 조건문과 반복문은 해당 헤더(for i in range(1, 99 + 1) 또는 if max_value < i * i)의 다음 줄에 들어쓰기가 있는 부분에 작동합니다.
만약 현재처럼 if 조건문의 들여쓰기를 앞으로 당겨주시면,
for 반복문에 if 조건문이 포함되지 않습니다. 따라서 for 반복문 모두 돌고나서 + if 조건문 부분이 따로 실행됩니다.
@@윤인성 아 이해됐어요!! 감사합니다☺️
질문 드립니다.
확인문제 2번에
key_list = ["name", "hp", "mp", "level"]
value_list = ["기사", 200, 30, 5]
character = {}
# 반복문
for i in range(len(key_list)):
character[key_list[i]] = value_list[i]
print(character)
여기서 character[key_list[i]] = value_list[i]
이것은 무슨 뜻인가요?
이게 설명보다는 한 번 결과를 보시는 것이 좋을 수 있어서
```
for i in range(len(key_list)):
....print(key_list[i], value_list[i])
....character[key_list[i]] = value_list[i]
``` 형태로 print() 함수로 어떤 값들이 들어가는 것인지 직접 확인해보는 것을 추천드립니다!
안녕하세요! 항상 연습코딩문제를 혼자서 답을 생각하지 않고 할때, 기호 ( ) , { } , 와 [ ] 이 세개의 기호가 언제 정확하게 써야 되는지 무척 헷갈립니다. 3개 모두 가 항상(?) 대체 가능하지 않을 것 같다는 제 작은 생각이 있지만, 너무 헷갈립니다 정리 해주세요 ㅜ ㅜ ㅜ ㅜ ㅜ감사합니다
각각 그냥 괄호, 딕셔너리 만들 때, 리스트 만들 때(또는 인덱스와 키 지정에) 사용합니다.
선생님 질문드립니다 !
파이썬을 통해서 차후에 데이터 분석 쪽으로 활용하고 싶어 현재 수강하고 있습니다.
1) 다름이 아니라 문제 풀이할 때 시간이 오래 걸리기도 하고, 가끔은 풀이와 다른 방법으로 답을 도출하기도 하는 데 이거 괜찮은건가요?
(물론 풀이를 보고 다시 풀어보고, 이렇게 간단하구나 충격받고 반성합니다...)
2) 데이터 쪽 파이썬 활용 관련 서적이나 공부는 언제쯤 시작하는 게 좋을까요?
적어도 기초는 다 떼고 시작해야된다고 생각해서 수강 중인데, [혼자 공부하는 파이썬]의 내용만으로도 다른 분야(데이터, 크롤링 등)을 공부하는 데
무리가 없을까요?
1. 넵 공부 단계니까 당연히 문제 없습니다. 풀이도 외우시는걸 추천드립니다.
2. 책 빠르게 그냥 빠르게 끝내고 바로 살펴보는걸 추천드립니다.
3번 문제에서 실행결과가 잘못 된것 같습니다. 실제로 141까지 더해야 10,011 입니다. 142까지 더하면 10,153 이고요~
넵 현재 책에서는 수정된 내용입니다 😂
좋은 강의 감사합니다!
코딩을 입문한지 얼마 안되었는데, 코딩 문제에는 제한 시간이 존재하는 것으로 알고 있습니다.
3번
while i*(i-1)/2 < limit:
sum_value = i*(i+1)//2
i+=1
4번
if (i*j) >(a*b):
a = i
b = j
max_value = a * b
혹시 이런 식으로 연산자가 복잡해지면 코드가 쌓이게 될 때 시간 차이가 많이 발생하는지 궁금합니다!
차이는 존재하지만 연산에 걸리는 시간 정도는 무시합니다.
반복이 n번 도냐, 2n번 도냐, log n번 도냐, n^2번 도냐처럼
거시적인 관점(큰 관점)에서만 보시면 됩니다.
@@윤인성 답변 감사합니다!
안녕하세요, 2번문제 질문있습니다.
key_list = ["name", "hp", "mp","level"]
value_list =["기사", 200, 30, 5]
character = { }
b = 0
while b
하다보니 이해됐네요.. for는 Range로 0,1,2,3를 넣어주는거고, while은 len으로 4를 가져오는거로 이해하면 될까요..
근데 그냥 print(len(key_list)), print(len(value_list))이렇게 가져오게되면 int 자료형으로 가져오는건가요,
range 는 어떤 자료형인지 궁금합니다.
그리고 for문 사용시에는 Range(len(key_list))를 넣어야하는데, While은 len으로만 해야 되더라고요. 제가 생각하는건 for문으로 range 함수를 넣으면 0,1,2,3이 앞의 변수로 들어가 는것이고, while문 len(key_list)라고 하게되면 i < len(key_list) 로 조건을 주게 되고, len(key_list)= 4이니까 4보다 작은 수 까지 돌리게 되고 , while문 안에 i +=1을 해줘야하는거같습니다. 제가 조금 헷갈 이해됐네요.. for는 Range로 0,1,2,3를 넣어주는거고, while은 len으로 4를 가져오는거로 이해하면 될까요..
근데 그냥 print(len(key_list)), print(len(value_list))이렇게 가져오게되면 int 자료형으로 가져오는건가요,
range 는 어떤 자료형인지 궁금합니다.
그리고 for문 사용시에는 Range(len(key_list))를 넣어야하는데, While은 len으로만 해야 되더라고요. 제가 생각하는건 for문으로 range 함수를 넣으면 0,1,2,3이 앞의 변수로 들어가 는것이고, while문 len(key_list)라고 하게되면 i < len(key_list) 로 조건을 주게 되고, len(key_list)= 4이니까 4보다 작은 수 까지 돌리게 되고 , while문 안에 i +=1을 해줘야하는거같습니다. 제가 조금 헷갈리는거같아 확인을 위해 길게 남겼습니다. 감사합니다.
1. range는 range라는 자료형입니다. 파이썬 또는 루비 같은 프로그래밍 언어에서 for 반복문을 위해서 만들어진 자료형입니다.
2. len() 함수는 무조건적으로 int 자료형을 리턴합니다.
3. for 반복문을 횟수와 조합해서 사용할 때는 range를 사용하는 것이 아예 문법적으로 되어 있어서, 설명해주신대로 for 반복문은 range로 0,1,2,3을 넣어주는 것입니다...!
@@윤인성 답변 감사합니다!
확인문제 4번에서,
for i in range(1,100)
j = 100-j
print(i*j)
이렇게하면 모든 곱셈 결과값들이 세로로 쭉 나오는데,
이걸 LIST 형태로 만든다음에, 다음 강의에 나오는 max함수를 이용하는 방법은 없을까요?
일단, 세로로 나열된 값들을, list 형태로 가로로 나열할 수 있는 방법이 있는지 궁금합니다.
print 함수의 end 키워드 매개변수를 따로 지정해주시면 됩니다. print(0, end=' ')처럼 하면 끝이 줄바꿈이 아니라 띄어쓰기가 됩니다.
max 함수를 쓰셔도 결과는 나오지만
그냥 계산하면 되는데
- 리스트가 메모리를 차지하고
- 반복을 내부적으로 한 번 더 도니
바로 구하는 것을 추천드립니다(물론 공부용으로 만들어보시는건 당연히 좋습니다!)
@@윤인성 print(0, end=' ')를 사용하면 가로로 나열되는건 맞는데, 이걸 아예 리스트로 만들 수 있는 방법은 없을까요?
@@hyeonhoonlee4520 그럼 리스트에 append 하셔야 합니다. 리스트에 뭔가를 할 때는 리스트를 만드시고 리스트의 함수를 호출해주시면 됩니다.
그냥 강의만 볼때는 너무 쉬운데... 이해가 잘되는데... 하다가 막상... 따라하면서 보니.. 내가 이해한게 이해한게 아니구나 하면서 계속 보고 있습니다.ㅜㅜ 좋은 강으 감사드립니다. 회사 업무 효율을 높이기 위함 인데.... 갈길이 멀군요^^
기본적인 질문인데요.. 마지막 프린터를 할때, 들여쓰기를 해야하나, 말아야 하나를 가끔 고민을 하는데요.. 좀 헷갈리네요. 너무 기본적인 질문이라.. ㅜㅜ
들여쓰기에 따라서 의미 자체가 달라지니, 사용하고 싶은 의미에 맞게 넣어주시면 됩니다.
드디어 이해의 막힘이 시작된거 같습니다..
2번문제 자체가 이해가 안되네요... 46을 더할때 1000을 넘으며 그때의 값이 1035라는게 왜 그런건가요?
sum_value < limit라는 것은 ...sum_value가 '0' 이니까 '1'씩 더해져서 999가 되면
종료된다는 것 아닌가요?
ㅜㅜ 이해의 한계가 오네요
sum_value에 1씩 더하고 있지 않으므로 "1씩 더해져서 999가 되면"이 아닙니다. 이걸 주의해서 다시 생각해보시면 좋을 것 같습니다!
@@윤인성 ㅋ 감시합니다..
3번 문제에서 i가 sum_value 덧셈 연산 후에 증가하면서 sum_value가 limit를 넘을 때 더한 i값에 + 1한 값이 출력문에서 출력되는 것 아닌가요?
i를 먼저 증가시키고 sum_value 덧셈 연산을 수행하는 것이 맞다고 생각이 들어서요
i를 1로 초기화 시켜준다면 sum_value를 1로 초기화시키고 while 반복문 안에서 i를 먼저 증가시켜주고 sum_value의 덧셈 연산을 하거나
i를 0으로 초기화시켰다면 sum_value도 0으로 초기화 시키고 while 반복문 안에서 i를 먼저 증가시키고 sum_value의 덧셈 연산을 하는 것 같은 모습으로요
더했을 때가 아니라 더할 때 라는 문장이 있어서 141을 더했고 142를 더하려고 할 때 10000을 넘는다는 의미인가요? 142까지 더한다면 10153이 나와서요
@@umumumum 넵 정확하십니다 'ㅁ' ...!! 오탈자 맞습니다 ;ㅁ; ...!!
@@윤인성 답변감사합니다.
선생님. 근데
if m
"m(기존의 값)이 i*j(현재 값)보다 작으면"이라는 조건일 때에 "m이라는 변수를 새로운 i*j로 교체한다"라는 코드이므로, 계속해서 돌면서 "m이 가장 큰 상황"을 만들게 됩니다...!
감사합니다. 쉽게 풀지는 못했지만 하여튼 풀었습니다 ㅎㅎ
음.. if max_value
문제는 없지만, 그러면 i*j를 2번 반복하게됩니다!
확인 문제 3번에서 sum_value가 limit 보다 클 때까지 반복하라고 하면
"1을 더할 때 10000을 넘으며 그때의 값은 0입니다." 이렇게 나오는데 왜 그런 건가요??
제가 쓴 코드가
while sum_value > limit:
sum_value += i
i += 1
print("{}을 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value))
이렇게 썼습니다.
전체 코드를 올려주실 수 있을까요!]
@@윤인성
limit = 10000
i = 0
sum_value = 0
while sum_value > limit:
sum_value += i
i += 1
print("{}을 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i, limit, sum_value))
이렇게 만들었습니다
현재 코드는 처음부터 0 > 10000이 false가 나와서 반복문 내부를 안 들어갑니다!
@@윤인성 오 감사합니다
안녕하세요^^ 189쪽 4번 문제 질문드립니다.
for i in range(1, 100, 1):
j = 100-i
i*j = k
if k >= max_vlaue:
a=i
b=j
max_vlaue=k
와 같이 결과값을 k라는 변수로 만들어서 처음에 답을 작성했습니다. (k 없이 연결해주는 것이 더 좋은 코드라는 것은 이해했습니다.) 다만 이렇게 출력하니 i*j = k 에서 SyntaxError: cannot assign to operator 가 나오는데 그 이유는 무엇일까요..?
= 연산자는 반드시 왼쪽에 대입할 변수, 오른쪽에 대입할 값이 와야합니다!
@@윤인성 아 기본을 놓치고 있었네요^^ 감사합니다!!!!
질문 올렷던게 왜 삭제되어지는거죠?
삭제한 것은 따로 없고 + "현재 컴토를 위해 보류됨"으로 분류된 것도 따로 없습니다. 박한세님께서 올린 댓글은 7일 전에 16강에 올린 것이 가장 최근으로 나옵니다!
연습문제 2번에서
# 숫자는 무작위로 입력해도 상관없습니다.
key_list = ["name", "hp", "mp", "level"]
value_list = ["기사", 200, 30, 5]
character= {}
character["name"] = "기사"
character["hp"] = 200
character["mp"] = 30
character["level"] = 5
# 최종 출력
print(character)
이런방법으로 풀어도 상관없나요??
결과는 똑같이 나오지만, 키와 값이 더 추가 되는 경우까지 유연하게 다룰 수 있게 하는게 목표라 책의 방법을 추천드립니다!
4-3 파트까지 진도를 다 끝냈는데 4장부터 너무 어렵네요 ㅠ
질문있습니다.
확인문제 2번에서 character[key_list[i]] = value_list[i]는 character이라는 dict에 key_list라는 키를 추가해주는것아닌가요? 그렇다면 키에 왜 따옴표를 붙이지않는지가 궁금합니다
딕셔너리에서 무언가를 추출할 때는 최종적으로 __값__을 넣어야 합니다.
예) character["무기"], character[1], character[true]
현재 코드에서는 변수를 통해서 간접적으로 값을 넣는 것이므로
예) ```
a = "무기"
character[a]
```
괄호에 따옴표를 붙이지 않는 것입니다.
만약 character["a"]를 해버리면, a라는 키를 추가하게 됩니다.
안녕하세요~
저는 4번 문제에서 선생님께서 풀어주신
if max_value < i * j: 를
while max_value < i * j: 로 풀었는데
if를 쓰던, while을 쓰던 의미가 같으니
해당 구문에서는 무엇을 쓰던 상관없다고 생각해도 될까요?
물론 if는 조건문에서, while은 반복문에서 사용된다는 정도의 차이는 알고 있습니다!
한 번 반복될 것이라 예측되는 while 반복문은 if 반복문과 같은 동작을 합니다.
다만 내부적으로 코드 실행기가 while 반복문에 대해서는
- 조건 비교
- 이전으로 돌아가게 만드는 코드
를 작성하게 됩니다.
이때 "이전으로 돌아가게 만드는 코드"가 생각보다 굉장히 복잡합니다[이걸 가능하게 만들기 위해서 인류가 100년이 넘는 시간을 투자했으며, 지금도 최적화를 위해 수 많은 연구가 이루어지고 있습니다].
그래서 조건문과 같은 동작을 하는 반복문이 있다면
조건문으로 작성해주는 것이 좋습니다!
현재 코드처럼 짧을 때는 상관 없지만
수 만 개의 데이터를 처리하는 큰 프로그램에서는 문제가 됩니다!
@@윤인성 이렇게 빠르게 답을 해주셨을줄이야 ㅠㅜ 자세하게 설명해주셔서 정말 감사합니다!!
안녕하세요확인문제 4번에서이렇게 작성해봤는데 결과가 (99, 1, 2500)이 나오네요..꼭 a랑 b값을 설정해야 정답이 나오나요?max_value = 0
for i in range(1, 100): j = 100 - i
current = i * j if max_value
i와 j가 계속 반복해서 갱신되므로, 최대 값을 쳤을 때 별도로 저장해야만 합니다.
4번문제를 이해하는 방법이 맞았나 싶어서 질문드려요!!
max_value = 0이라고 선언해놨고, 4번문제의 코드에서 첫번째 값은 1*99=99이니 처음 계산에서 max_value는 99로 대체되고 그 다음 값인 2*98=196으로 또 max_value가 대체되고,, 이런 과정들을 다 진행한 후에 max_value가 2500이 나오는게 맞나요?
넵!
안녕하세요 항상 좋은강의 감사합니다. 복습도중 질문이 생겨서 남깁니다:)
max=0
a=0
b=0
for i in range(1,99+1):
j=100-i
if max
어떤 오류가 떴는지 알려주실 수 있을까요!
@@윤인성 i*j=max
^
SyntaxError: cannot assign to operator 이렇게 나옵니다!!! 위에 i*j>max할때도 같은 오류 나옵니다!
@@jaeyoungan536 코드를 i * j = max로 지정하시면, 왼쪽이 변수가 아니라 계산된 값인데, 값에 값을 넣고 있어서 오류가 발생합니다.
.
i * j > max의 경우는 문제가 없는 코드인데, 같은 오류가 뜬다면 저장을 안 하고 실행하신 경우로 생각됩니다![그래서 이전 결과가 출력되는 경우]
3번문제를 이렇게 풀었더니 141를 더할 때 라고 추출이 됩니다. 혹시 잘 못된 부분 알려주시면 감사하겠습니다.
limit=10000
i=1
sum_value=0
while True:
sum_value+=i
i+=1
if sum_value >= limit:
break
i += 1 부분을 if 조건문 뒤로 이동시켜주세요!
@@윤인성 왜 인지 알려주실수 있으실까요????
@@jaeyoungan1931 sum_value가 limit을 넘을 때의 i를 출력하는 것이 목적인데 + 현재 올려주신 코드는 그걸 또 1을 증가시켜서 출력하게 됩니다. 의식의 순서대로
- limit을 넘을 때 → i추가를 그만두게 만들려면 순서를 바꿔야 합니다.
좋은 강의 항상 감사드립니다. 질문이 한가지 있는데요. sum_value + = i+뒤에 띄어쓰기를 하면 오류가 나오더라구요.. 띄어쓰기 안하면 해결이긴 합니다. 왜 오류로 읽히는건지 잘모르겠어서 질문 드립니다.
"+="가 하나의 기호이기 때문입니다...!
188페이지 3번 문제에서 맨 마지막 문장 print(..............)에서 format의 첫번째 값을 동영상에서는 i로 두고 구하셨는데 교재에는 i-1로 표시되어 있어서요. 어떤게 맞는 건지요?
-1을 넣어주셔야 합니다 😂...! 제가 실수했습니다 😂
확인문제 4번에서 최대값 구하는 방법을 이전 확인문제에서 언급하셨다고 하셨는데, 혹시 어떤문제에서 언급하셨는지 알려주실수 있나요?
Kangcheol Choi 앗 4-2절에서 다루었다고 생각했는데 없군요 @_@ ...!!! 이후에 추가로 정리하겠습니다 @_@ ...!!
앞에 나오는 기본 개념을 공부하는 것에 비하여 갑자기 확인 문제에서 난이도가 갑자기 올라서 학습 의욕이 떨어지네요 그래도 포기하지 않고 강의 반복해서 보고 있지만 저 같은 초보한테는 쉽지가 않네요
188p 문제2번 character[key_list[i]] = value_list[i]에서
1번째 실행 시 name 기사라고 안 나오고 'name' : "기사' 이렇게 나오나요?
그렇게 뜨지는 않습니다.
코드를 실행해서 나올 수 있는 부분은 직접 해보시기 바랍니다.
[그게 기억에도 더 많이 남습니다]
안녕하세요! 오늘도 강의 잘 들었습니다ㅎ
질문이 있는데요, 188쪽 3번 문제를 해설 듣기 전에 풀어보다가 짠 코드에 컴퓨터가 이상하게 반응(?)했습니다.
먼저 제가 짠 코드에요!
limit = 1000
i = 1
sum_value = sum(list(range(0, i, 1)))
while sum_value limit:
print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다.".format(i-1, limit, sum_value))
break
이렇게 했더니 visual studio code에서도 그렇고 google colab에서도 그렇고 결과가 재깍 나오지 않고 오래 걸리더라고요. 결국 결과도 보지 못하고 ctrl + c로 강제 종료했습니다.
왜 이런 일이 생겼을까요? 궁금해서 여쭤봅니다. 감사합니다!
반복문 내부에서 sum_value와 limit을 변경하는 코드가 전혀 없으므로, 반복문을 계속해서 영원히 돌기 때문입니다.
선생님 안녕하세요! 2번 문제 질문드립니다
for key in key_list:
print(key)
for value in value_list:
print(value)
character=print("{}:{}".format(key,value))
print(character) 라고 식을 적었을때는 왜 정답이 나오지 않는 걸까요?
아래 반복문에서는 key라는 변수를 활용할 수 없기 때문입니다.
@@윤인성 그러면 마지막에
.format(key_list(key), value_list(value))
이런식이면 될까요? 너무 길어서 사용은 안하나요?
@@오또카지-k5e 전체 코드를 올려주실 수 있을까요! 둘 다 리스트이므로 인덱스를 넣어야 요소를 꺼낼 수 있습니다. 정수가 아닌걸 넣으면 오류가 발생합니다.
maximum = 0
i = 1
j = 99while maximum < i * j:
maximum = i*j
i += 1
j = 100-i
print("최대가 되는 경우 : {} * {} = {}".format(i, j, maximum))이렇게 하면 답이 최대가 되는 경우 : 51 * 49 = 2500이 나오는데 어떻게 수정해야될까요?
최대값보다 커지는 순간(maximum < i * j)에 while 반복문이 벗어나버려서, maximum, i, j를 할당하는 코드가 실행되지 않아서 발생하는 문제입니다.
1. "다음 단계가 원하는 조건일 때"로 구분하시면 되는데, maximum < (i + 1) * (100 - (i + 1))" 형태로 사용해주시면 됩니다. 다만 이 코드는 반복을 돌 때 쓸데없는 연산이 일어나므로
2. 코드가 왜 그런지 알고 있으므로, "벗어난 뒤에 한 번 더 연산해주면 되겠다"하는 형태의 코드를 사용하는 것이 좋습니다. 반복문을 벗어난 뒤에 i += 1과 j = 100 - i 등을 그냥 한 번 더 계산해도 괜찮습니다.
윤인성 감사합니다!!👍👍
선생님 최댓값 말씀 중에 이전 확인 문제에 풀었다고 하셨는데 어딘지 알려주실수 있나요?? 책도 찾아보고 그랬는데 찾을수가 없어서용 ㅜㅜㅜㅜ 감사합니다ㅜㅜ
앗 깜빡하고 넘어왔어서.... 제일 마지막 강의에서 설명합니다 😭...!!
선생님. 4번 문제에 j=100-i라는 것이
i는 1부터 99까지 올라가는 거라면 j는 99부터 1까지 내려간다는 의미인가요?
넵 그렇습니다...!
4-3절 확인문제 4번에, max_value, a, b에 대한 초기값과 관련된 질문인데요.
a,b라는 변수를 선언해주지 않고,
바로 i,j를 사용하여 소스를 구성할 수는 없는건가요?
P.S. 이 문제에서는 하위 print함수 부분에 format함수에 a,b가 명시되어있어 a와 b를 당연히 써야한다고 생각은 했습니다만....
방법이 생각이 드신다면, 해당 방법을 사용하시면 됩니다...! 다만 저는 그런 방법이 잘 생각나지 않는군요 @_@ ...!
연습문제2번에서 for i in range(len(key_list)) : 라고 넣으면 왜 안되나요?
전체 코드 + 오류를 함께 올려주실 수 있을까요!
3번 문제 문의드립니다.
실행결과에 '142를 더할 때 10000을 넘으며 그때의 값은 10011입니다.' 라고 하는데 142가 아닌 141을 더할 때 10011이 되네요.
limit = 8로 해서도 해봤는데 '5를 더할 때 8을 넘으며 그때의 값은 10입니다.' 라고 나오는데 5가 아니라 4 아닐까 해서 여쭤봅니다.
앗 그렇군요 'ㅁ' ...! 오탈자 제보 감사 드립니다...!
3번문제질문입니다
while sum_value < limit :
sum_value += i
i += 1
print("{}를 더할때 {}을 넘으며 그때의 값은 {}입니다".format(i,limit,sum_value))
sum_value 에다가 1을 대입하면 안되는건가요?
정민형 처음에 1을 대입하면 이후에 다 더한 값이 1 추가되서 나오게 됩니다...!
일반적으로 초기값은 "앞으로 어떤 연산을 할 때 그 연산에 영향을 주지 않을 값"으로 설정합니다. 그래서
- 더하기 빼기: 0으로 초기화
- 곱하기 나누기: 1로 초기화
이외에도
- 배열 연산: 단위 행렬
등으로 초기화 하기도 합니다.
4번 문제에서 max_value = 0 을 작성하는 이유는 단순히 max_value라는 변수를 선언해주기 위함인가요??
넵 그렇습니다 'ㅁ' ...!
질문드려요 ㅠㅠ
2번 문제에서 작성하는 부분에서
while i in range(0,4):
character={“{}:{}”.format(key_list[i],value_list[i])}
print(character)
은 왜 안될까요..? ㅠㅠ
김영진 while은 "while 조건:" 형태의 구문을 갖고 있습니다. 현재 작성해주신 형식은 while이 아니라 for을 사용해주셔야 합니다.
문제 3 에서 sum_value 한 다음에 i 에 1을 증가시켜서 i 값이 1만큼 크게 나오는 것 같습니다?
오탈자로 다음 쇄에서 수정될 내용입니다 😂
4번문제에서 변수a,b를 설정하지 않고 마지막 format 함수에서 a,b 자리에 그냥 i,j를 넣으면 왜 안되는건가요?
해도 결과가 나오면 큰 문제가 없습니다. 다만 반복 변수라던지 반복문 내부에 선언된 변수는 (일반적인 프로그래밍 언어의 경우) 외부에서 사용할 수 없습니다. 그래서 다른 프로그래밍 언어에서 넘어 보신 분들이 익숙하게 볼 수 있게 a, b를 사용한 것입니다.
그렇게 해봤는데 결과값으로 99*1=2500 이렇게 나왔습니다.. 이렇게 나온 이유가 뭔지 물어봐도 될까요?반복문 내부에 선언된 변수라 오류처럼 나오는걸까요?
@@김은재-k8q 앗 제가 문제를 딴걸 보고 답변을 드렸군요 @_@, 해당 문제에서는 반복문을 중간에 탈출하지 않으므로, i가 1부터 99까지 쭉 돕니다. 따라서 반복문을 벗어난 뒤에는 무조건 99가 됩니다. j는 100 - i 이므로 무조건 1이 됩니다.
4번 문제에서 (동영상 6:23 ~)
if max_value < i * j :
max_value = i * j
이렇게만 해도 i * j의 최대값이 구해진다는 부분이 도저히 이해가 가지 않습니다.
6:36 에서 예전에 풀어본 거라서 자세히 설명하지 않겠다고 하셨는데 다른 질문에서 보듯이 예전에 풀어본 게 아니라서 이해하기에 어려움이 있습니다.
자세한 설명을 적어주시면 감사하겠습니다. ^^
한 번 코드의 실행을 직접 손으로 써보시면 왜 최대값이 구해지는지 쉽게 이해하실 수 있을 것입니다. 해보셨는데 안 되신다면 어떤 부분이 이해가 안 되는지 조금 더 자세하게 설명해주실 수 있을까요...!
@@윤인성 지금이라도 답해주실지는 모르겠지만 앞에서 max_value를 0으로 설정하셨고, 그 뒤에 건드리지 않았는데 그러면 max_value가 0으로 인식되게 되는데 어떻게 최댓값만 출력되는지 알고싶습니다
@@OhNleNan 조건으로 i * j가 현재 max_value보다 클 때에 max_value를 i * j로 대체하게 했으므로 최댓값이 출력되는 것입니다!
확인 문제 어렵네요..으엌 책 전체를 끝까지 보고 다시 봐야겠네요..
좋은 강의 감사합니다!
max_value 값 문제는 돌머리를 탓하며.. 오늘도 암기합니다 흑흑
기본적으로 컴퓨터공학과에서 알고리즘 자료구조까지는 대부분 발상이 불가능하고, 아예 외워야 하는 것이라 생각해서, 멍청하신 것이 아니라 정상입니다 😭...!!!
항상 좋은 강의 감사드립니다! 확인문제 4번이 저 코드가 어떻게 최대값 구하게 나오는지 이해가 잘 안갔는데 좀 자세히 설명 가능할까요?
MS M 말로는 그냥 "최종 출력으로 낼 변수를 저장해두고, '리스트에 이것보다 큰 값이 있으면 그걸로 바꿔둔다'"가 전부입니다. 이걸 바탕으로 값을 하나하나 넣어보시기 바랍니다.
@@윤인성 아하 혹시 그러면 max_value = i *j 이걸 if max_value < i*j 밑에 놓은 이유는 max_value가 0부터 시작해서 그런건가요?
MS M "맥스밸류보다 큰 경우 => 대체해서 넣음"에 해당하는 코드입니다. 0을 초기값으로 놓은 이유는 "i*j가 0보다 클 것이 확실하기 때문입니다.
@@윤인성 죄송합니다 ㅠㅠ 왜 이 문제만 이해가 어려울까요?ㅠ 죄송한데 쉽게 숫자 대입으로 설명 가능할까요?
MS M 만약 해당 내용이 이해가 안 된다면, 다시 앞부터 진행하실 것을 추천합니다. 대학교에서 1-2학기 정도 진행되는 내용이라 그정도 시간 잡고 하셔도 느린 것이 아닙니다.
명강의 감사합니다. 강아지가 다나았다니 정말 다행이네요! :)
아...가면 갈수록 이해하는데 어려움이 있네요 ㅎㅎ 어찌됐든 답글 보고 이해 했습니다. 2500 이후부터는 false 네요~~~^^
2020.8.5 수강완료. 이제 정확히 절반 왔네요!
늘 감사합니다
명강의 감사합니다~
4번 문제 질문입니다!
if max_value < i*j
max_value = i*j
이 두 줄에서 갑자기 최대값이 나오는 것이 이해가 가지 않아요ㅠㅠ
최대값을 구하는 코드를 설명을 앞에서 깜빡했는데[그래서 마지막 강의 마지막 부분에서 설명합니다 😭].
기본적으로 어떤 대상들을 훑으며
"""
If 방금 본 것보다 큰게 있으면
Then 그게 큰거다
"""
라는 코드를 사용하면 최대값을 찾습니다
[10, 20, 50, 27, 5]라는 리스트가 있을 때 각각의 요소에 위의 처리를 직접 눈으로 해보시면 대충 최대값이 왜 구해지는지 이해하실 수 있을 것입니다.
그걸 응용해서 i*j의 최대값을 구하는 것이 4번 문제입니다.
142아니고 141이에요 알고리즘 틀렸습니다
넵 현재 오탈자로 올라가있는 내용입니다 😭
@@윤인성 3번 142 같은 경우 format(i-1,limit,sum_value) 로 해야하는데 풀이에서 그냥 i로 풀어가지고 1만큼 더 크게 나온걸까요???
안녕하세요~ 강의 잘 보고 있습니다!
P189에 4번 문제에서
#최댓값 구하기
안에서
i * j
if j * i > max_value:
max_value = i * j -> 이 부분을 i * j = max_value로 놓으면 오류가 생기는 이유가 궁금합니다
a = i
b = j
=는 "오른쪽의 것을 왼쪽에 넣는다"라는 방향성이 있는 연산자입니다. 왼쪽에 변수만 올 수 있습니다.
감사합니당!
강의 감사합니다.
좋은 하루 되세요^^
4-3