-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2.py
More file actions
265 lines (160 loc) · 8.66 KB
/
2.py
File metadata and controls
265 lines (160 loc) · 8.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
# chapter 2. 간단한 함수 만들기
# 1. 함수란?
def greet():
print("반갑습니다.")
print("파이썬의 세계로 오신 것을 환영합니다.")
# 함수를 호출하는 문장
greet()
# 다음과 같이 실행하면 print("반갑습니다."), print("파이썬의 세계로 오신 것을 환영합니다.")를 일일이 쳐줄 필요가 없어진다.
# 동작원리는 다음과 같다.
# def : 함수를 만든다는 선언
# greet() : 함수의 이름
# : 다음에는 함수에 속하는 문장들
# 주의점 : 파이썬은 들여쓰기 상태로 함수에 속하는 문장인지 아닌지를 판단한다.
# 반드시 들여쓰기를 해주어야 한다.
# (1). 연습문제
# 다음은 3개의 문장을 담고 있는 함수를 정의하되 이름은 MH라 하자. 그리고 정의했다면 그 함수를 2번 이상 호출해보자.
def practice():
print("1 + 2 + 3 + 4 + 5 =", 1 + 2 + 3 + 4 + 5 )
print("Simple is the best!")
print("행복한 파이썬~")
practice()
# 2. 인자 있는 함수
# greet2() 괄호안에 들어가는 것은 가리켜 매개변수(parameter)라고 한다.
def greet2(name):
print("반갑습니다.", name)
print(name, "님은 파이썬의 세계로 오셨습니다.")
greet2("John")
greet2("Hong")
# 위의 과정은 함수 호출로 위에 함수정의 greet2(name)에 이름을 전달 및 저장을 하게 된다.
def adder(num1, num2):
print("덧셈 결과:", num1 + num2)
adder(10,5)
# 위의 예에서 보이듯이 함수의 정의에 있어서 매개변수의 수는 둘 이상이 될 수 있다. 매개 변수 사이에
# 콤마를 찍어서 매개 변수들을 구분해 주면 된다. 물론 매개변수가 둘이면 호출할 때 전달하는 값도
# 둘이어야 한다. 그러면 첫 번째로 전달된 값이 첫 번째 매개변수에 저장되고 두 번째로 전달된 값이 두 번째
# 매개 변수에 저장된다. 그리고 조금 뒤늦은 이야기지만, 우리가 작성해왔던 다음과 같은 형태의 문장도 사실은 print라는 이름의
# 함수를 호출하는 것이었다.
# print("안녕")
# 파이썬이 미리 만들어서 제공하는 함수임.
# (2). 연습문제
# 문제1. 매개 변수를 통해서 하나의 문자열을 전달받아서 그 전달받은 문자열을 총 3회 출력한느 함수를 만들어 보자.
def 안녕(문자열):
print(문자열)
print(문자열)
print(문자열)
안녕("너!")
# 문제2. 매개변수를 통해서 하나의 정수를 전달받아서 전달 받아서 전달 받은 수와 부호가 반대인 정수를 출력하는 함수를 만들어보자.
# 예를 들어서 함수에 3이 전달되면 -3이 출력되고 -3이 전달되면 3이 출력되어야 한다.
def 정수변환(x):
print( x * -1 )
정수변환(3)
정수변환(-3)
정수변환(100)
# 문제3. 매개 변수를 통해서 2개의 정수를 전달 받아서 이 2의 평균값을 계산해서 출력하는 함수를 만들어 보자.
# 예를 들어서 이 함수에 3과 4가 전달되면 이 2수의 평균값인 3.5가 출력되어야 한다.
def 평균값(x, y):
print( (x + y) / 2 )
평균값(3, 4)
# 공식 해답과의 차이점은 한글로 함수를 지정하였다. 영어로 한번 더 연습하기
# 3. 함수 만들기
def adder2(num1, num2):
ar = num1 + num2
return ar
result = adder2(5, 3)
print(result)
# 일단 여기서 함수의 정의는
# def adder2(num1, num2):
# ar = num1 + num2
# return ar
# 위 함수 내에서는 다음과 같이 변수 ar을 선언하고 num1과 num2의 합을 이 변수에 저장하였다.
# ar = num1 + num2
# 그리고 이어서 return으로 시작하는 다음 문장을 실행했는데,
# return ar
# 이는 변수 ar에 저장된 값을. 함수를 호출한 영역으로 되돌려주라는 뜻이다.
# 따라서 다음과 같이 함수를 호출하면,
# result = adder2(5,3)
# 먼저 adder2 함수가 호출되고, 그 함수 안에서 되돌려 주는 값 8이 adder2(5,3)을 대신하여 다음의 상태가 된다.
# result = 8
# 이것이 "함수를 호출한 영역으로 값을 되돌려준 결과이다"
# 함수가 되돌려 주는 값을 가리켜 반환 값이라고 한다. 즉, return은 함수를 호출한 영역으로 값을
# 반환할때 사용하는 명령어이다.
def adder3(num1, num2):
return num1+num2
print(adder3(5, 3))
# 위의 함수에서 보이듯이 return으로 시작하는 문장을 다음과 같이 만들수도 있다.
# return num1 + num2
# 그럼 덧셈이 먼저 진행되어 위 문장은 다음의 상태가 된다.
# (num1과 num2에 각각 5와 3이 저장된 상태이다.)
# return 8
# 따라서 덧셈의 결과로 얻어진 값 8이 반환된다. 그리고 위 예에서는 다음과 같이 adder3 함수를 호출했는데,
# print(adder3(5, 3))
# 모양새가 print 함수에 adder3(5, 3)이 반환하는 값이다. 즉 위의 문장을 실행하면, 먼저 adder3이 호출되고 그 결과로
# 8이 반환되어 다음과 같이 print 함수를 호출하게 된다.
# print(adder3(5, 3)) > print(8)
# (3). 연습문제
# 1. 하나의 정수를 전달받아서 전달 받은 수와 부호가 반대인 정수를 반환하는 함수를 정의.
# 물론 정의한 함수를 호출해서 정상적으로 동작하는지 확인까지 해야 한다.
def hong(d):
return d * -1
print(hong(12))
# 2. 2개의 정수를 전달받아서 그 2수의 평균값을 계산해서 반환하는 함수 만들기
def avr(x, y):
return (x + y)/2
print(avr(2, 4))
# 4,5,6 기타 기본사항들 ( 함수저장 및 불러오기, 주석기능)
# anaconda prompt에서는 python을 실행하면 곧바로 사용할수 있지만, 저장 기능이 없다. 보통 windows shell을 쓰면 저장을 할수 있는데,
# 지금과 같이 편의를 위해서 sublime text에서 저장을 하고 향후 깃허브에 올리기 용이하도록 사용한다.
# shell에서도 저장은 .py 확장자로 저장을 하며 필요할때마다 불러 쓸수 있다. sublime text 같은 IDE 사용이 훨씬 편리하다.
# 주석기능은 위에서도 사용했지만 #을 붙이면 된다. ctrl + / 를 누르면 자동생성되며 sublime text에서 다른 언어들도 이렇게 주석 처리를한다.
# HTML과 css에서의 주석과 비교를 하면 다음과 같다.
# HTML (주석 처리 :<!-- -->), css (주석 처리 :/* */), javascript (단문 주석 처리 : //, 장문 주석 처리: /* */)
# 7. 파이썬에서의 이름 달기 규칙 및 대소문자 구문
# 파이썬에서 변수나 함수의 이름을 짓는 데 있어서 다음 3가지의 제약이 존재한다.
# (1).파이썬은 대소문자 구분한다. (자바스크립트의 string(문자열)에서 대소문자 구분 한다.)
num = 0
Num = 10
print (num, Num)
# (2). 숫자로 시작하면 안 된다. (자바스크립트에서 역시 똑같다.)
# 2num = 0
# 에러 발생
# (3). 키워드는 이름으로 쓸 수 없다. (자바스크립트에서도 역시 키워드는 예약어로서, 변수명으로 사용 할 수 없다.)
# 그리고 앞서 우리가 함수를 만들때 사용했던 def, 값을 반환할 때 사용했던 return, 이렇게 용도가 정해져 있는 단어들을 가리켜 "키워드(keyword)"라 하는데,
# 이러한 키워드를 이용해서 변수나 함수의 이름을 짓는 것도 안된다.
# return = 2
# 에러발생
# 지켜야할 관례
# (1). 변수와 함수의 이름은 소문자로 시작한다.
# (2). 둘 이상의 단어를 연결하는 경우 언더바를 이용해서 연결한다. (스네이크 케이스)
# 좋은 예 my_name
# 좋지 않은 예 myname, MyName, My_Name
# 오류가 발생하지는 않지만, 이름의 혼동을 피할수 있게 해준다.
# 8. main 함수가 있는 방식으로 예제를 작성
# adder1.py
def adder(num1, num2): # 함수 adder의 정의
return num1 + num2
print(adder(5, 3)) # 위에 정의된 adder 함수의 호출과 print 함수의 호출
# 그러나 보통은 다음과 같은 방식으로의 작성이 더 권장되기도 한다.
# adder2.py
def adder(num1, num2): # 함수 adder의 정의
return num1 + num2
def main (): # 프로그램의 실행 흐름을 담은 main 함수의 정의
print(adder(5, 3))
main() #위에 정의된 함수 main의 호출
# 결과값 : 8
# op4.py
def add(num1, num2): # add 함수의 정의
return num1 + num2
def min(num1, num2): # min 함수의 정의
return num1 - num2
def mul(num1, num2): # mul 함수의 정의
return num1 * num2
def div(num1, num2): # div 함수의 정의
return num1 / num2
def main(): # 프로그램의 실행 흐름을 담고 있는 main 함수의 정의
print(add(5, 3))
print(min(5, 3))
print(mul(5, 3))
print(div(5, 3))
main () # main 함수의 호출
main()