https://book.naver.com/bookdb/book_detail.nhn?bid=16268369
으뜸 파이썬과 함께 공부하는 포스트입니다.
4.1 '환영합니다.' 를 출력하는 greet()이라는 이름의 함수를 정의하고, 이 함수를 두번 호출하여 이 인사말을 두 번 출력하고자 한다. 밑줄 친 부분에 들어갈 알맞은 코드를 채우고 전체 코드를 실행하시오.

실행 결과

def 문으로 함수를 정의하고, 함수 내부에 print() 문을 입력하는 것으로 함수를 하나 완성할 수 있다.
물론 하나의 함수를 출력하여 문장이 두 번 나올수도 있겠지만, 문제에서 함수를 두번 호출하라고 했으니 print()문은 한번만 쓰고, 함수 외부에서 my_greet() 함수를 두번 호출하는 것으로 문제를 마무리 할 수 있다.
4.3 m과 n이라는 이름의 매개변수를 두 개 입력받아서 이 두 값 중에서 큰 값을 반환하는 max2(m,n) 함수와 작은 값을 반환하는 min2(m,n) 함수를 구현하시오. 100과 200을 인자로 넣어서 호출하여 그 결과를 확인하시오. 이를 위하여 밑줄 친 부분에 들어갈 알맞은 코드를 채우고 전체 코드를 실행하시오.

실행 결과

물론 max와 min이라는 함수가 따로 존재하지만, if문으로 큰값과 작은값을 호출하기 위해서 사용자 지정 함수의 인자끼리 비교하는 문장을 입력한다.
이 때 max2 함수에서는 m이 n보다 클 때 최대값을 반환해야 하므로 m을 출력하기 위해 return m을 입력해주고, else문에는 둘중 최대값이 아닌 인자를 반환해야 하므로 return n을 입력한다. min2 함수에서는 이와 반대로 m이 n보다 클 때 return n을, else문에는 return m을 입력해준다.
이후, print()문에서 문장을 적고, 함수에 인자를 두 개 집어넣어서 프로그램을 마무리한다.
4.4 미국에서 주로 사용되는 단위인 마일 값을 국제표준 단위인 킬로미터(km) 값으로 변경하고자 한다. 마일 값을 매개변수로 넘겨받아 킬로미터로 반환하는 mile2km(m) 함수를 구현하고 이 함수를 호출하여 1에서 5마일을 킬로미터로 출력하시오. 이 때 for - in range() 를 사용하여 반복 출력이 되도록 하시오(단 1마일은 1.61 킬로미터로 정의하시오.)

실행 결과

먼저 mile2km 함수를 정의해보자. 문제에 1마일은 1.61 킬로미터라고 했으니, 1.61에 변수 하나를 곱하는 식으로 함수 정의를 마친다.
그리고 함수 외부에서 for문을 사용해야 하는데, 1에서 5마일까지 쓰라고 했으니, for i in range(1,6)을 적는다. for 문의 범위를 (1,n)으로 잡는다면 출력하는 것은 1에서 n-1 까지 출력하기 때문이다.
그리고, for문 내부에서 문장을 적고, mile2km함수에 for문의 변수 i를 적는다. 그러면, i에 들어갈 숫자가 함수의 변수 m 부분에 자동적으로 들어가게 되고, 문제가 마무리된다.
4.7 사용자로부터 세 정수 a, b, c를 입력받도록 하여라. 그리고 이 세 수의 평균값, 최댓값, 최솟값을 다음과 같이 출력하도록 하여라. 이 때, 세 수를 매개변수로 넘겨받아서 이 세 수의 평균값, 최댓값, 최솟값을 반환하는 mean3(a, b, c), max3(a, b, c),, min3(a, b, c) 라는 함수를 각각 정의하고 호출하여라.

실행 결과

처음은 input문으로 시작한다. 세 수를 한꺼번에 입력하기 때문에 split()문을 써주고, 그 다음 a, b, c에 각각 int()를 취해준다. int()를 사용하는 이유는 정수로 만들어야 연산이 제대로 실행되기 때문이다.
그 후 함수를 하나씩 정의한다. 평균은 인자를 다 더해서 인자의 개수로 나누어주어야 값이 나온다.
최댓값은 다른 문제에서 한 것과 같이 if()문으로 비교할수도 있지만, max() 함수를 사용하여 구하면 훨씬 편하게 구할 수 있다. 최솟값도 마찬가지이다. min() 함수를 사용하면 편하게 구할수 있다.
4.9 사용자로부터 임의의 수를 연속적으로 입력받도록 하시오. 이 수들에 대한 평균값, 최댓값, 최솟값을 반환하는 함수 mean_of_n(nums), max_of_n(nums), min_of_n(nums)을 구현하여 다음과 같이 출력하여라.

실행 결과

이 문제에서는 map() 함수를 사용한다. 인자들을 리스트에 넣기 위해 리스트를 먼저 입력하고, 그 속에 map()을 적는다. map() 함수를 이용하여 입력받은 문자들을 숫자로 바꾸는 역할을 할 수 있다.
그러므로 map() 함수 내부에 int를 적고 쉼표로 구분하여 input() 문을 적는다. input() 문을 닫고 나서 split() 메소드로 문자를 하나씩 쪼개어준다. 앞에서 연 괄호만큼 닫아주어 마무리한다.
다음은 함수를 정의한다. 여기서도 앞 문제와 마찬가지로 편리하게 하기 위해서 sum() 함수를 사용한다. sum() 함수는 입력한 인자를 다 더하는 역할을 한다.
여기서 평균을 구하려면 어떻게 해야하는가? 그렇다. 개수만큼 나누어야 한다. 그러기 위해서 len() 함수로 인자의 개수를 세주어 sum() 함수를 나누어 준다. 최댓값 최솟값은 다른 문제에서 했듯이 max와 min 함수를 사용해준다.
그리고 마지막으로 print()문을 완성해주면 마무리된다.
여기서 {:.1f}는 소수 첫째자리까지 표현한다는 뜻이다.
4.10 다음과 같이 사용자로부터 두 점의 좌표 (x1, y1), (x2, y2)를 입력받아 두 점 사이의 거리를 출력하시오. 이를 위하여 distance(x1, y1, x2, y2) 함수를 구현하시오.

실행 결과

input() 문으로 숫자를 한꺼번에 나타낼 수도 있지만, 좌표를 나타내기 때문에 헷갈리지 않기 위해서 하나씩 사용해준다.
그다음 함수를 정의하는데, 두 점의 거리를 구하려면 x의 차이를 구해서 제곱하고, y의 차이를 구해서 제곱하고, 그 둘을 더해서 루트를 씌워주면 된다. 파이썬에서 구현하자면 ((x2 - x1) 2 + (y2 - y1) 2) ** 0.5) 정도가 될 것이다.
이렇게 식을 정의하고 반환문을 써준다. 마지막으로 print() 문으로 문장을 입력하고 함수에다가 앞에서 input() 문으로 할당해놓은 인자들을 넣어서 마무리한다.
4.15 n개의 숫자를 가변인수로 입력받은 후 이 숫자들을 오름차순으로 정렬하여 출력한 다음 my_sort() 함수를 작성하시오.

실행 결과


실행 결과

처음의 *nums는 가변 인자이다. 즉 여러개의 인자를 넣을 수 있다는 뜻이다. 그 다음 리스트를 하나 만든다.
리스트의 안에 인자를 넣고, 오름차순으로 정렬하기 위해 sort()를 써 준다. 반환문을 써 주면 함수는 마무리 된다.
마지막으로 print() 문에 함수를, 함수 안에 인자를 넣으면 프로그래밍이 마무리된다.