#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[re][re][re]None 없애기, print와 return2022-10-20 14:42
작성자

네 답변 감사합니다.


return이 없다면 return 값이 없기에 None이 출력이 된다는 것은 이해했습니다.

하지만 아래 사진들 중 첫 사진과 달리 마지막 두 사진(return을 사용한 경우)에선 입력값 하나를 주면 1~9단까지의 결괏값을 출력하지 않습니다.

첫 사진의 결과를 출력하되, None이 나오지 않게 하려면 어떤 방법을 사용해야 하나요?

 +UC3mNOvTukAAAAASUVORK5CYII=

BwTqEtzmJk86AAAAAElFTkSuQmCC 

x+kg40TZUkosQAAAABJRU5ErkJggg== 


안녕하세요.


여러 가지 방법이 있어서 직접 이해하실 수 있도록 몇 가지 방법을 설명해드리려고 합니다.


1.

첫 사진의 경우, 함수 내에 있는 for문을 통해서 print()를 9회 반복하기 때문에 구구단의 결과가 나오게 됩니다. (굳이 return을 사용하지 않는다면)


하지만 함수 밖에 있는 print()문에 의해 None이라는 출력이 하나 더 나오게 되는 것입니다. 따라서 print를 지우고 calcGugudan(2)만 적으면 됩니다.


2.

만약, 두 세번째 사진처럼 함수의 결과를 print()가 아닌 return으로 반환하는 경우에는 함수에 대한 결과를 '한 번' 반환하는 것이기 때문에 앞서 조교님이 설명하신대로 2 * 1 에 대한 첫 번째 결과만 계산하여 반환하게 되는 것입니다.


따라서 질문자님께서 코딩하신대로 for문 안에 return을 사용하지는 않습니다.


1번의 방법대로 하시거나, 굳이 함수에 return을 사용하고 싶으시다면


def f(a, b):

   return a * b

for i in range(1, 10):

   print(2, "*", i, "=", f(2,i))


와 같은 방법이 있긴 한데, 이렇게 되면 함수가 단순 곱만 진행하는 것과 똑같기 때문에 사용자 지정 함수가 의미가 없을 겁니다.


아마 실습자료에 따르면 1번 방법으로 하는 것이 목적이실거라고 생각됩니다.


3.

이건 Tip인데 for문에서 list 형식으로 [1, ~, 9]를 적는 것보다 range(1, 10)을 사용하시는 것이 앞으로도 더욱 편리하실 겁니다.


사용자 정의 함수에 대한 내용을 더욱 살펴보시면 도움될 것 같습니다 :)

댓글
이전[re][re]None 없애기, print와 return2022-10-20
다음Python정렬문제2022-10-18