작성자: 안세윤
작성일: 3/24일
진도: 3-1 if문~비교연산자
▶ 조건문이란?
“조건문”이란 참과 거짓을 판단하는 문장이다.
-쉽게 말해 특정 조건일 때 코드를 실행하는 것이다.
▶ If문의 구조
if와 else 조건문의 기본 구조이다.
if 조건문:
수행할 문장1
수행할 문장2
else:
수행할 문장A
수행할 문장B
‘조건문’이 참이면 문장1과 2 (if 블록)를 실행하고, 거짓이라면 문장A와 B (else 블록)를 실행한다.
★ ( : ) 사용하기
조건문 뒤에는 반드시 ( : )을 붙여야 한다. ( : )을 빠뜨리는 경우가 많으니 까먹지 말고 잘 기억하자.
▶ 들여 쓰기
다른 언어와 달리 파이썬은 if문을 사용할 때에는 if문에 속하는 모든 문장을 "들여 쓰기" 해야 한다.
- "들여 쓰기"의 잘못된 예를 알아보자.
아래의 같은 경우 "실행할 문장2"를 들여쓰기 하지 않았기 때문에 오류가 발생한다.
그렇기 때문에 조건문을 사용할 때에는 'Spacebar' 혹은 'Tab'을 사용하여 "같은 깊이"로 들여쓰기 해야 한다.
if 조건문:
실행할 문장1
실행할 문장2
실행할 문장3
★ "Spacebar와 Tab"
"들여 쓰기"를 할 때 'Tab'과 'spacebar'를 모두 사용 할 수 있다. 정답이 있는 것은 아니다. 하지만 2가지를 함께 사용해서는 안된다. 스페이스바로 할 거면 스페이스바로 하고 탭으로 할거면 항상 탭으로 통일해야 한다. 두 개를 혼용 시 오류가 발생할 수 있으니 주의하자.
▶ 비교연산자
if 조건문에는 다음과 같은 비교연산자들을 사용할 수 있다.
(<, >, ==, !=, >=, <=)
비교 연산자 | 의미 |
x <y | x가 y보다 작다. |
x>y | x가 y보다 크다. |
x==y | x와 y가 같다. |
x!=y | x와 y가 같지 않다. |
x>=y | x가 y보다 크거나 같다. |
x<=y | x가 y보다 작거나 같다. |
'='의 경우 변수를 지정할 때 사용한다. 수학에서 사용하는 '같다'를 나타내기 위해서는 '==' 이런 식으로 사용해야 한다.
이러한 비교연산자를 if 조건문에 사용해 보자.
score = 85
if score >= 90 :
print('합격')
else:
print('불합격')
>>> 불합격
조건문인 'score = 85'가 score >= 90에 거짓이 되기 때문에 'else문'이 실행되는 걸 알 수 있다.
▶ CODEUP-1151 풀이
Q.10보다 작은 수가 입력되면 small을 출력, 10이상이면 아무것도 출력하지 마시오.
a = int(input("숫자를 입력하세요 : "))
if a<10:
print('small')
else:
pass
▶ 느낀점
프로그래밍을 배우면서 어려움도 많이 있었지만 조원들과 함께 스터디하면서 부족한 부분을 채울 수 있었다. 이제 본격적으로 파이썬에 대해 공부하니 내가 '빅데이터 응용학과'에 온 것에 실감난다.
작성자: 윤서현
작성일:2023/03/25
진 도: while문
▶ while 문
a. while문의 기본 구조
while 문?
-- 반복해서 문장을 수행해야 할 경우 while문을 사용한다.
따라서 while문을 반복문이라고 볼 수 있다.
이는 while문의 기본 구조로 조건문이 참(True)인 동안에 while문 아래의 문장이 반복해서 수행된다.
while문의 예시를 살펴보자.
treeHit<10인 동안 while문 안의 문장을 계속 수행하는 반복문이다.
예시를 살펴 보면 treeHit = treeHit+1 로 treeHit 값이 계속 1씩 증가한다. 그후 나무를 treeHit번 만큼 찍었음을 알리는 문장을 출력하고 treeHit가 10이 되면 "나무가 넘어갑니다."라는 문장을 출력한다. 그러면 treeHit<10을 더이상 만족하지 않으므로 조건이 거짓이 되어 while문을 빠져나가게 된다.
★
treeHit=treeHit+1은 프로그래밍을 할 때 자주 사용하는 기법이니 기억해 두자. treeHit 값을 1만큼씩 증가시킬 목적이며 treeHit+=1 처럼 사용하기도 한다.
b.while문 만들기
while문을 만들어 보자
while문을 통하여 숫자 출력을 해보았다. while문의 조건문이 참일 때까지 반복하다 거짓이 되었을 때 while문을 빠져나오게 된다.
c.while문 강제로 빠져나가기
while문은 조건문이 참인 동안 계속해서 while문 안의 내용을 반복적으로 수행한다. 때로 강제로 while문을 빠져나오고 싶을 때가 있는데 이때는 break문을 사용하면 된다.
while문을 빠져나와야 할때의 일상생활 예로 자판기를 들 수 있다. 자판기는 돈을 받았을 때 상품을 주어야 하나, 상품이 없을 때는 상품제공을 중단해야 한다. 이때 break문을 사용하면 된다. 이를 파이썬으로 표현해보면 다음과 같다.
위의 예시에서 조건문은 항상 참이기 때문에 무한 루프를 돌게 된다. while문을 수행하는 동안 coke의 개수는 coke=coke-1에 의해 1씩 줄어들게 된다. 만약 coke==0 : 이 참이 되면 break문이 호출되어 while문을 빠져나가게 된다.
d.while문의 맨 처음으로 돌아가기
while문 안의 문장을 수행할 때 입력 조건을 검사해서 조건이 맞지 않으면 while문을 빠져나간다. 그런데 프로그래밍을 하다 보면 while문을 빠져나가지 않고 while문의 맨 처음(조건문)으로 다시 돌아가게 만들고 싶은 경우가 생기게 된다. 이때 사용하는 것이 바로 continue문이다.
1부터 10까지의 숫자 중에서 홀수만 출력하는 예시를 살펴보자.
위의 예시를 살펴보면 a가 10보다 작은 동안 a는 1씩 계속 증가하며 홀수를 출력하고 있다. a가 짝수이면 continue문장을 수행한다. 이는 while문의 맨 처음(조건문)으로 돌아가게 하는 명령어이다. 따라서 a가 짝수이면 print(a)는 수행되지 않는다. (a%2==0이 참이 되는 경우는 a가 짝수일 때이다.)
e.무한 루프
무한 루프(Loop)란 무한히 반복한다는 의미이다. 우리가 사용하는 일반 프로그램은 무한 루프의 개념을 거의 사용하고 있다.
파이썬에서 무한 루프는 while문으로 구현할 수 있다. 다음은 무한 루프의 기본 형태이다.
while문의 조건문이 True이므로 항상 참이 된다. 따라서 while문 안에 있느 문장들은 무한하게 수행될 것이다.
다음은 무한 루프 예이다.
▶ CODEUP 풀이
Q.정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
▶ 느낀점
혼자 공부하는게 아닌 조원들과 함께 공부하고 티스토리 작성을 통해 학습한 내용을 복습하니 공부한 내용이 확실히 제것이 된것 같습니다. 이번 주차에는 while문을 맡아 티스토리를 작성하게 되었는데 작성하며 직접 다시 코드을 실행하다 보니 아리송하던 부분도 스스로 깨우치는 시간을 가질 수 있었습니다. 하나하나 배우면서 제가 상상하던 프로그래밍과 가까워지는 느낌입니다. 아직 미숙한 점이 많으나 조원들과 함께 성장해갈 미래가 기대됩니다. 그런 성장을 도와주시는 멘토분들과 코드 임원진 분들 모두 감사합니다!
작성자: 오현정
작성일: 2023/03/26
진도: for문 (기본구조 ~ continue)
▶ for문
a. for문의 기본구조
for 변수 in 리스트(or 튜플, 문자열):
수행할 문장1 # 들여쓰기 주의!
수행할 문장2
...
리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례대로 변수에 대입되어 되어 "수행할 문장1", "수행할 문장2" 등이 수행된다. '첫번째 요소 대입→ 수행할 문장1 , 수행할 문장2 → 두번째 요소 대입→ 수행할 문장1 ,수행할 문장2 ..... 마지막 요소→ 수행할 문장1 ,수행할 문장2' 의 순서로 수행된다.
※ 여기서 주의할 점은 if문과 마찬가지로 들여쓰기를 해야 for문에서 수행이 된다는 점이다. 특히, for문을 여러번 사용할 때 그 for문에 해당하는 수행할 문장을 잘 들여쓰기 해줘야 오류가 발생하지 않는다. 콜론(:)을 사용하는 것 역시 조건문들의 공통적인 문법이니 잊어버리지 말자!
b. 예제를 통해 for문 이해하기
1. 전형적인 for문
test_list = ['one', 'two', 'three'] #리스트 자료형
for i in test_list: # test_list 요소 처음부터 마지막까지 차례대로 대입
print(i)
- 변수 i에 'one' 대입 → i 출력 → 'two'대입 → i 출력→'three' 대입 → i 출력 순서로 수행되는 코드이다.
2. 다양한 for문 사용
a = [(1,2), (3,4), (5,6)] # 리스트 안에 세개의 튜플이 들어있음
for (first, last) in a: # 튜플 하나씩 대입, (first,last) = (1,2)와 같은 방식
print(first + last) # first, last 따로 출력 가능
위의 코드는 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.
3. for문의 응용
ex. 총 5명의 학생이 시험을 보았을 때 시험 점수가 60점 이상이면 합격, 그렇지 않으면 불합격인 결과를 출력하는 코드
marks = [90, 25, 67, 45, 80]
number = 0 # 각각의 학생에게 번호를 붙여 줌
for mark in marks: # 점수 리스트(mark)에 변수 mark 대입
number = number +1 # for문이 한 번씩 수행될 때마다 number는 1씩 증가
if mark >= 60:
print("%d번 학생은 합격입니다." % number) # true이면 if문, false이면 else문 실행
else:
print("%d번 학생은 불합격입니다." % number)
c. for문과 continue
- while문과 동일한 문법으로 for문 안의 문장을 수행하는 도중에 continue문을 만나면 for문의 처음으로 돌아가게 된다.
ex. 60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람에게는 아무 메시지도 전하지 않는 프로그램
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number +1
if mark < 60:
continue # if문 수행문, true이면 수행-> for문 처음으로 돌아감
print("%d번 학생 축하합니다. 합격입니다. " % number)
점수가 60점보다 낮은 학생일 경우에는 mark < 60이 참이 되어 continue문이 수행된다. 따라서 축하 메시지를 출력하는 부분인 print문을 수행하지 않고 for문의 처음으로 돌아가게 된다. 즉, 점수가 60점 이상인 1번, 3번, 5번 학생만 축하문자를 받게 된다.
▶ CODEUP 풀이
# 6076 : [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기2
Q,정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
n = int(input())
for i in range(n+1) : #range(n) = 0, 1, 2, ... , n-2, n-1 까지의 수열
print(i)
ex. 입력 : 5
출력: 0
1
2
3
4
5
▶ 느낀점
[]를 써야하는지 ()를 써야하는지 ,들여쓰기를 해야하는 것인지, :을 붙여야 하는 것인지 등이 아직 한 번에 떠오르지 않는다. 익숙해지는 것이 답이라고 생각해서 스스로 코드를 짜보는 연습을 많이 해봐야겠다는 생각이 들었다.
작성자 :김동구
작성일 :3.25
진 도 : 조건문이란 무엇인가~ 조건부 표현식
■ 1. and,or,not
조건을 판단하기 위해 사용되는 연산자들이다
x or y x와 y 둘중에 하나만 참이어도 참이다
x and y x와 y 모두 참이어야 참이다
not x x가 거짓이면 참이다
(연산자 or의 사용법)
■ 2. in s,not in s
파이썬의 조건문중 하나이다
x in 리스트, x not in 리스트
x in 튜플, x not in 튜플
x in 문자열, x not in 문자열
(조건문 in s, not in s의 사용법)
만약 조건문에서 아무 일도 실행하고 싶지 않다면
pass를 이용하면 된다
(pass가 수행되어 아무런 결괏값이 나오지 않는다)
■3. 다양한 조건을 판단하는 elif
if와 else만으로는 다양한 조건을 판단하기 어렵다
‘주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어 가라’
이 문장은 조건을 판단하는 부분이 두 군데가 있다. 먼저 주머니에 돈이 있는지, 없다면 주머니에 카드가 있는지를 확인해야 한다
if와 else로도 문장을 표현할 수 있지만 굉장히 복잡해진다
이럴때 elif를 사용하면 된다
(elif의 사용법)
if,elif,else를 모두 사용한다면 if,elif,else순으로 사용해야 한다
또, elif는 개수에 상관없이 사용할 수 있다
수행할 문장이 한 줄이면 간략하게 코드를 작성할 수 도 있다
■ 4. 조건부 표현식
조건부 표현식의 형식
‘조건문이 참인 경우’ if 조건문 else ‘조건문이 거짓인 경우’
조건부 표현식은 가독성이 좋고 한 줄로 표현이 가능해 활용성이 좋다
■5. 예제 풀이
■ 대학에서 프로그래밍을 배울 줄 알았더라면 고등학교 정보시간에 딴짓을 안했을 것이다. 지금이라도 열김히 해야겠다는 생각이 들었다.
작성자 : 정원준
작성일 : 3/25
진 도 : 3-3. For문
■ a. for문과 함께 자주 사용하는 range 함수
‘range(x,y)’ 함수는 x부터 y까지 일정한 간격으로 증가하는 숫자들을 반환하는 반복 가능한 객체(어떤 속성값과 행동을 가지고 있는 데이터)를 생성한다. 이때 생성되는 숫자들은 x<=, <y의 범위 안에 존재한다. 예를 들어, range(0,5)는 0부터 4까지의 숫자들을 반환하는 객체를 생성한다. ‘range()’ 함수는 주로 ‘for문’에서 사용되며 코드는 “ for I in range( ): “ 이다.
Ex) ‘range()’함수를 이용하여 0부터 10까지 출력하는 코드이다.
다음은 ‘range()’함수를 이용하여 구구단을 만드는 코드이다.
■ b. list comphrehenshion 사용하기
List comphrehension은 파이썬에서 리스트를 만들기 위한 효율적인 방법이다. List comphrehension은 리스트를 생성하는 반복문과 조건문을 한 줄에 표현하게 해준다.
Ex) 0부터 9까지의 숫자 중에서 짝수만을 갖는 리스트를 생성해보자.
우선, 일반적인 ‘for문’을 사용하여 리스트를 생성하는 방법이다.
다음으로, list comprehension을 이용하여 간단하게 표현하는 방법이다.
■ CodeUp 풀이
Q. 리스트 중에서 홀수에만 2를 곱하여 저장하는 코드를 list comphrehension을 사용하여 표현해보자.
■ 느낀 점
원래부터 코딩을 좋아했는데 자세하게 배우면서 더 알아가고 싶은 호기심이 생겼다. 지금도 코딩 배우는 게 재밌어서 새벽까지 하고 있는데 앞으로도 재밌게 배울 수 있을 것 같다. 물론 아직 완벽하게 습득한 것이 아니지만 반복하고 복습한다면 내 것으로 만들 수 있지 않나 싶다.
작성자: 윤서현
작성일: 2023/03/30
진 도: 4-1 함수
▶ 함수
a.함수란 무엇인가?
함수란 입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내어놓는 것을 의미한다.
믹서를 생각해보자. 과일 주스를 만들기 위해 과일을 믹서에 넣고, 믹서를 사용해서 과일을 갈아 과일 주스를 만든다.
우리가 믹서에 넣은 과일은 "입력", 과일 주스는 "출력(결과값)"이 된다. 그리고 믹서가 바로 함수와 비슷하다. 믹서는 과일을 입력받아 주스를 출력하는 함수와 같다.
b.함수를 사용하는 이유는 무엇일까?
함수를 사용하는 이유는 크게 두가지가 있다.
1. 반복되는 부분이 있을 경우 '반복적으로 사용되는 가치 있는 부분'을 한 뭉치로 묶어서 '어떤 입력값을 주었을 때 어떤 결과값을 돌려준다'라는 식의 함수로 작성하는 것이 현명하기 때문이다.
2.자신이 만든 프로그램을 함수화하면 프로그램 흐름을 일목요연하게 볼 수 있기 때문이다.
이로써 프로그램 흐롬도 잘 파악할 수 있고 오류가 어디에서 나는지도 바로 알아차릴 수 있다.
따라서 함수를 잘 사용하고 적절하게 만들 줄 아는 사람이 능력 있는 프로그래머이다.
c.파이썬 함수의 구조
파이썬 함수의 구조는 다음과 같다.
def는 함수를 만들 때 사용하는 예약어이다.
함수 이름은 함수를 만드는 사람이 임의로 만들 수 있다.
매개변수는 이 함수에 입력으로 전달되는 값을 받는 변수이다.
이렇게 함수를 정의한 다음 if, while, for문 등과 마찬가지로 함수에서 수행할 문장을 입력한다.
위 그림은 함수의 예시이다.
<이는 함수의 이름이 add이고 입력으로 2개의 값을 받으며 결괏값은 2개의 입력값을 더한 값을 의미한다.>
add함수를 사용하면 위와같이 작동된다. 변수 a에 3, b에 4를 대입한 다음 앞에서 만든 add함수에 a와 b를 입력값으로 넣어 준다. 그리고 변수 c에 add함수의 결괏값을 대입하면 print(c)로 c의 값을 확인할 수 있다.
d. 매개변수와 인수
매개변수(parameter)와 인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 구분해보자.
매개변수: 함수에 입력으로 전달된 값을 받는 변수
인수: 함수를 호출할 때 전달하는 입력값
따라서 위 그림을 참조하면 a,b가 매개변수이고 3,4,가 인수인 것이다.
★
[같은 의미를 가진 여러 가지 용어들에 주의하자!]
프로그래밍을 할때 용어의 혼용을 주의해야한다. 입력값을 다른 말로 함수의 인수, 매개변수 등으로 말하기도 하고 결괏값을 출력값, 반환 값, 돌려주는 값 등으로 말하기도 한다. 이렇듯 많은 용어가 여러가지 다른 말로 표현되지만 의미는 동일한 경우가 많다. 따라서 이런 용어를 기억해 놓아야 헷갈리지 않을것이다!
e. 입력값과 결괏값에 따른 함수의 형태
함수는 들어온 입력값을 받아 어떤 처리를 하여 적절한 결괏값을 돌려준다.
입력값 -----> 함수 ------> 결괏값
이러한 함수는 입력값과 결괏값의 존재 유무에 따라 4가지 유형으로 나뉜다.
- 일반적인 함수
위에서 봤던 예시가 일반적인 함수이다.
이처럼 입력값과 결괏값이 있는 함수의 사용법을 정리하면 다음과 같다.
결괏값을 받을 변수 = 함수이름(입력인수1, 입력인수2...)
- 입력값이 없는 함수
입력값이 없는 함수도 존재한다.
say라는 함수가 만들어졌지만 매개변수가 비어있다. 이러한 함수를 사용하기 위해서는 say()처럼 괄호 안에 아무 값도 넣지 않아야 한다. 이 함수는 입력값은 없지만 결괏값으로 Hi라는 문자열을 돌려준다. a=say()처럼 작성하면 a에 Hi 문자열이 대입되는 것이다.
이처럼 입력값이 없고 결괏값만 있는 함수는 다음과 같이 사용된다.
결괏값을 받을 변수= 함수이름()
- 결괏값이 없는 함수
결괏값이 없는 함수도 존재한다.
결괏값이 없는 함수는 호출해도 돌려주는 값이 없기 때문에 다음과 같이 사용한다.
함수이름(입력인수1, 입력인수2....)
'3,4의 합은 7입니다.' 라는 것은 결괏값이 아니라 <수행할 문장>에 해당하는 부분이다. 결괏값은 오직 return 명령어로만 돌려받을 수 있다. 위를 실행하면 None이 뜬다. 이는 거짓을 나타내는 자료형이다.
- 입력값도 결괏값도 없는 함수
위 함수는 입력 인수를 받는 매개변수도 없고 return문도 없으니 입력값도 결괏값도 없는 함수이다.
이러한 함수는 다음과 같이 사용한다.
함수이름()
▶ CODEUP 풀이
123 을 출력하시오.
입력값이 없는 함수를 이용하여 123을 출력할 수 있다. 위에서 언급했듯이 입력값이 없는 함수를 사용할 때에는 괄호를 비워둔채로 사용하면된다.
작성자: 김동구
작성일: 4/1
진도: 4-2
▶매개변수 지정하여 호출하기
함수를 호출할 때 매개변수를 지정할 수 있다.
add 함수를 통해 매개변수를 지정하여 사용할 수 있다.
>>>result = add(a=3,b=7)
>>>print(result)
10
(add 함수를 이용한 매개변수)
매개변수를 지정하면 순서에 상관없이 사용할 수 있다는 장점이 있다.
>>>reult = add(b=5 , a=3)
>>>print(result)
8
▶입력값이 몇 개가 될지 모를 때는 어떻게 해야 할까?
입력값이 여러개인데 몇 개가 입력 될지 모를 때의 문제를 해결하기 위해 파이썬은 다음과 같은 방법을 제공한다.
def 함수이름(*매개변수):
<수행할 문장>
...
일반적인 함수 형태에서 괄호 안의 매개변수 부분이 *매개변수로 바뀐다.
▶여러개의 입력값을 받는 함수 만들기
>>>def add_many(*args):
result = 0
for i in args:
result = result + i
return result
add_many의 입력값이 몇 개이든 매개변수 앞에 *를 붙이면 입력값을 전부 모아 튜플로 만들어 준다.
(위의 코드에서 *args는 임의의 함수이다.)
>>>result = add_many(1,2,3)
>>>print(result)
6
>>>result = add_many(1,2,3,4,5,6,7,8,9,10)
>>>print(result)
55
add_many(1,2,3)로 함수를 호출하면 6을 돌려주고 add_many(1,2,3,4,5,6,7,8,9,10)을 대입하면 55를 돌려준다.
def add_mul(choice,*args):
if choice =="add":
result = 0
for i in args:
result = result + 1
elif choices == "mul":
result = 1
for i in args:
result = result + 1
return result
add_mul 함수는 여러 개의 입력값을 의미하는 *args 매개변수 앞에 choice 매개변수가 추가되어 있다.
>>>result = add_mul('add',1,2,3,4,5)
>>>print(result)
15
>>>result = add_mul('mul',1,2,3,4,5)
>>>print(result)
120
매개변수 choice에 'add'가 입력된 경우 *args 에 입력되는 값을 모두 더해 15를 돌려주고 'mul'가 입력된 경우 입력된 값을 모두 곱해 120을 돌려준다.
▶ 키워드 파라미터 kwargs
키워드 파라미터를 사용할 때는 매개변수 앞에 별 두 개(**)를 붙인다.
>>>def print_kwargs(**kwargs):
print(kwargs)
>>>def print_kwargs( a=1 )
{'a':1}
>>>print_kwarge(name='foo',age = 3)
{'age';3,'name':'foo')
입력값이 모두 닥셔너리로 만들어져 출력된다는 것을 확인할 수 있다.
▶함수의 결괏값은 언제나 하나이다
함수의 결과값은 언제나 딱 하나이다.
def add_and_mul(a,b);
return a+b, a*b
>>>result = add_and_mul(3,4)
result = (7,12)
함수의 결과값은 2개가 아니라 1개이기 때문에 결과 값을 튜플값 하나 (a+b,a*b)로 돌려준다.
만약 튜플의 값을 2개의 결괏값처럼 받고 싶다면 함수를 다음과 같이 호출한다.
>>>result1,result2 = add_and_mul(3,4)
특별한 상황에서 함수를 빠져나가고 싶다면 return을 단독으로 써서 함수를 즉시 빼져나갈 수 있다.
▶ 매개변수의 초깃값 미리 설정하기
def say_myself(name,old,man=True):
print("나의 이름은 %s 입니다."% name)
print("나이는 %d살입니다."% old)
if man:
print("남자입니다")
else:
print("여자입니다")
위의 예제처럼 함수의 매개변수 초깃값을 설정할 수 있다.
함수의 매개변수에 들어갈 값이 항상 변하는 것이 아닐 경우 함수의 초깃값을 미리 설정해 두면 유용하다.
*초기화시키고 싶은 매개변수를 항상 뒤쪽에 놓은 것을 잊지 말아야한다.
작성자:안세윤
작성일: 4/1
진도: 4-3
▶ 함수 안에서 선언한 변수의 효력 범위
a = 1
def vartest(a):
a = a +1
vartest(a)
print(a)
a라는 변수를 지정 후 1을 대입한다. 다음 입력으로 들어온 값에 1을 더해 주고 결괏값은 돌려주지 않는 vartest 함수를 선언한다. 그리고 vartest 함수에 입력값으로 a를 주었다. 마지막으로 a의 값을 출력하는 print(a)를 입력한다. vartest 함수에서 매개변수 a의 값에 1을 더했으니까 2가 출력될 것 같다. 하지만 실행 해보면 1이 나오늘걸 확인 할 수 있다.
함수안에서 새로 만든 매개변수는 함수 안에서만 사용하는 “함수만의 변수”이다. 함수 vartest의 매개변수 a는 함수 안에서만 사용하는 변수이지 함수 밖의 변수 a가 아니다.
▶ 함수 안에서 함수 밖의 변수를 변경하는 방법
vartest라는 함수를 사용해서 함수 밖의 변수 a를 1만큼 증가 시키는 방법은 무엇이 있을까?
1. return 사용하기
a = 1
def vartest(a):
a = a + 1
return a
a = vartest(a)
print(a)
2. global 명령어 사용하기
a = 1
def vartest():
global a
a = a+1
vartest()
print(a)
vartest 함수 안의 'global a'는 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다.
★ global 명령어 사용
프로그래밍을 할 때 global 명령어는 사용하지 않는 것이 좋다. 그 이유는 함수는 독립적으로 존재하는 것이 좋기 때문에, 외부 변수에 종속적인 함수는 그다지 좋은 않은 함수이다. 그러므로 첫번째 방법인 return을 사용하자.
▶ lambda
'lambda'란 함수를 생성할 때 사용하는 예약어이다. def와 동일한 역할을 하고, 함수를 한줄로 간결하게 만들 때 사용한다. def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
- lambda 예시
add = lambda a, b: a+b
result = add(3, 4)
print(result)
7
add는 두 개의 인수를 받아 서로 더한 값을 돌려주는 lambda 함수이다.
- lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다.
▶ 사용자 출력
함수 input
input은 입력되는 모든 것을 문자열로 취급한다.
number = input("숫자를 입력하세요: ")
>>> 숫자를 입력하세요:
숫자를 입력하세요: 3
print(number)
3
숫자를 입력하라는 프롬프트에 3을 입력하면 변수 number에 3이 대입된다. print(number)를 해보면 3이 출력되는 것을 알 수 있다.
▶ print 자세히 알기
a = 123
print(a)
>>>123
a = "Python"
print(a)
>>>Python
a = [1, 2, 3]
print(a)
>>>[1, 2, 3]
print문이 수행해 온 일은 우리가 입력한 자료형을 출력하는 것이었다.
▶ 큰따옴표("")로 둘러싸인 문자열 (+)와 동일하다.
print("life" "is" "too short")
lifeistoo short
print("life"+"is"+"too short")
lifeistoo short
첫 번째 코드와 두 번째 코드의 결괏값은 완전히 동일하다.
▶ 문자열 띄어쓰기
print("life", "is", "too short")
life is too short
(,)를 사용하여 문자열을 띄울 수 있다.
▶ 한 줄에 결괏값 출력하기
for i in range(10):
... print(i, end=’ ’) ...
>>> 0 1 2 3 4 5 6 7 8 9
한 줄에 결괏값을 계속 이어서 출력하려면 '매개변수 end'를 사용해 끝 문자를 지정해야 한다.
codeup-6035
Q. 실수 2개 입력받아 곱 계산하기
print("숫자를 입력하세요: ")
number1 = int(input())
number2 = int(input())
print(number1 ** number2)
작성자: 오현정
작성일: 2023/04/02
진도: 4-3 파일 읽고 쓰기
▶ 파일 생성하기: open() 함수
# 파일 객체 = open(파일 이름, 파일 열기 모드)
-> 입력값 : 파일 이름 & 파일 열기 모드
결괏값: 파일 객체 리턴
f = open("새파일.txt", 'w')
f.close()
# 파일열기 모드 종류
파일 열기 모드 | 설명 |
r | 읽기모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
a | 추가모드 - 마일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
cf. 파일을 쓰기 모드로 열 때
1. 해당 파일이 이미 존재할 경우: 원래 있던 내용이 모두 사라진다.
2. 해당 파일이 존재하지 않는 경우: 새로운 파일이 생성된다.
위 예에서는 디렉터리에 파일이 없는 상태에서 새파일.txt를 쓰기 모드인 'w'로 열었기 때문에 새파일.txt라는 이름의 새로운 파일이 현재 디렉터리에 생성되었다.
# 절대주소와 상대주소
1. 절대주소: 처음부분(c:/)부터 주소를 써주는 것
ex.새파일.txt 파일을 C:/doit 디렉터리에 생성
f = open("C:/doit/새파일.txt", 'w')
f.close()
2. 상대주소: 현재 실행하는 파일을 기준으로 상대적인 경로를 써주는 것
ex. 새파일.txt 파일을 현재 디렉터리에 생성
f = open("새파일.txt", 'w')
f.close()
cf. f.close()는 열려 있는 파일 객체를 닫아 주는 역할을 한다. 프로그램을 종료할 때 파이썬 프로그램이 열려 있는 파일의 객체를 자동으로 닫아주기 때문에 생략해도 되지만 쓰기모드로 열었던 파일을 닫지 않고 다시 사용하려고 하면 오류가 발생하기 때문에 close()를 사용해서 열려 있는 파일을 직접 닫아 주는 것이 좋다.
▶ 파일을 쓰기 모드로 열어 내용 쓰기
# writedata.py
f = open("C:/doit/새파일.txt", 'w')
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
print(data)
두 프로그램의 다른 점은 data를 출력하는 방법이다.
첫 번째 방법: 모니터 화면 대신 파일에 데이터를 적는 방법 ( 파일 객체 f의 write 함수 )
두 번째 방법: 우리가 계속 사용해 왔던 모니터 화면에 데이터를 출력하는 방법 ( print 함수 )
cf. 한글 깨짐이 발생한다면, f = open("C:/doit/새파일.txt", 'w', encoding = "UTF-8") 과 같이 세 번째 인자에 encoding = "UTF-8" 을 써주면 된다!
▶파일을 읽는 여러 가지 방법: readline() 함수
# f,readline() 함수는 파일을 한줄 씩 읽어오는 함수
# readline_test.py
f = open("C:/doit/새파일.txt", 'r') # 파일을 읽기 모드로 열기
line = f.readline() # 파일의 첫 번째 줄을 읽기
print(line) # 출력하기
f.close()
앞에서 만든 새파일.txt를 수정하거나 지우지 않았다면 위 프로그램을 실행했을 때 새파일.txt의 가장 첫 번째 줄이 화면에 출력될 것이다.
cf. 모든 줄을 읽어서 화면에 출력하기
ex1.
# readline_all.py
f = open("C:/doit/새파일.txt", 'r')
while True: # 무한루프
line = f.readline() # 파일을 계속해서 한 줄씩 읽어들임
if not line: break # 만약 더 이상 읽을 줄이 없으면 break를 수행,
print(line) # readline()은 더 이상 읽을 줄이 없을 경우 빈 문자열('')을 리턴
f.close()
한 줄 씩 읽어 출력할 때 줄 끝에 \n 문자가 있으므로 빈 줄도 같이 출력된다.
ex2.
while True:
data = input()
if not data: break
print(data)
두 프로그램의 다른 점: 입력을 받는 방식
첫 번째 예: 파일을 사용한 입력 방법
두 번째 예: 키보드를 사용한 입력 방법
▶CODE UP 예제풀이
▶느낀점
작성자 : 정원준
작성일 : 4/3
진 도 : 4-3파일 읽고 쓰기
■ 파일을 읽는 여러가지 방법
1) readlines 함수 사용하기
파일을 읽을 때 사용하는 함수로, 파일을 리스트의 형식으로 가져와서 한 줄 씩 출력한다. readlines 함수를 사용하기 위해선 먼저 파일을 읽기모드(r)로 열어야 한다. 그리고 파일 객체의 ‘readlines()’ 함수를 호출하면 한 줄 씩 출력하는 코드를 짤 수 있다.
아래는 ‘새 파일’에 data를 넣은 파일에 readlines 함수를 적용한 코드이다.
2) read 함수 사용하기
read() 함수는 파일 내용 전체를 출력하는 함수이다. readlines 함수와 마찬가지로 파일 모드를 읽기모드(r)로 열어야 한다. 그리고 파일 객체의 ‘read()’ 함수를 적용하면 파일 내용 전체를 읽을 수 있다.
아래는 ‘새 파일’에 data를 넣은 파일에 read 함수를 적용해본 결과이다.
■ 파일에 새로운 내용 추가하기
1) 파일 객체를 for문과 함께 사용하기
파일에 새로운 내용을 추가하기 위해서는 파일을 추가모드(a)로 열고, 파일 객체의 ‘write()’함수를 적용하여 내용을 추가할 수 있다.
아래는 for문을 사용하여 내용을 추가한 코드이다.
이 결과로 ‘새 파일’에 “11번째 줄입니다.”~”19번째 줄입니다.” 가 추가된다.
2) with문과 함께 사용하기
with 구문을 사용하여 파일을 처리할 때, 우선 open함수를 이용하여 파일 객체를 생성한다. with구문을 사용하여 내용을 추가하면, 구문이 종료되면 자동으로 파일이 닫힌다. 따라서 f.close() 를 사용하지 않아도 된다.
아래는 ‘foo’라는 파일에 with구문을 이용하여 내용을 추가한 코드이다.
■ 느낀 점
확실히 더 배울수록 어려워져서 머리속에 정확히 남지는 않지만, 전에 했던 내용들을 복습하고, 앞으로 나갈 진도들을 꾸준히 공부하면 코딩이 익숙해질 것이라고 믿고 있다.
'Study > Jump to python' 카테고리의 다른 글
Jump to Python #2 (0) | 2023.03.24 |
---|---|
점프 투 파이썬 스터디 학습 가이드 (0) | 2023.02.26 |