상세 컨텐츠

본문 제목

4. 파이썬 기초, for 함수?! ( 교재 - 한입에 쏙 파이썬 #31 ~ #37 )

IT & 프로그래밍

by 천승원 2019. 6. 9. 19:34

본문

 

 

오늘 배운건 for, range를 배웠는데 생각보다 직관적인 이해가 쉽지않았다.

그래도 알아가는 맛이있었다.

 

 

3-1 반복작업

 

예시)

거북이 100마리에게 인사를 하고싶다.

그래서 print('안녕 거북이 1번'), print('안녕 거북이 2번') .... print('안녕 거북이 100번') 을 사용해야 100마리 거북이에게 인사를 할 수 있다.

 

하지만 for와 range를 이용하면 100마리 아니 몇만마리도 두 줄의 코드로 인사할 수 있다.

 

for num in range(101):       -> 0번부터 100번까지임 1번부터 100번을 원한다면 range(1,101) 이라 작성

   print("안녕 거북이", num, '번')

 

->안녕 거북이 0번

안녕 거북이 1번

.

.

.

안녕 거북이 100번

 

으로 나온다.

 

즉, for는 반복되는 작업을 위한 코드이고

range()는 0부터 괄호안 숫자(정수)-1 까지 출력되는 코드이다.

 

반복작업의 경우 for와 while 두 가지 방법을 쓸 수 있는데, 지금은 for만 배운다.

책에는 횟수가 정해져 있을때 for, 조건이 정해져있을때 while 이라 한다.

아직 뭔 말인지 모르겠다.

 

 


 

 

IDLE 에디터 만드는건 굳이 복습하기보다는 하면되는거라 제낀다

IDLE에는 대화형 셀과 에디터 두 가지가 있다.

 

 


for의 기본구조

 

for와 리스트를 같이 쓸 수 있다.

기본구조는

 

for 변수 in 리스트:

    실행할 명령

 

for와 in을 키워드

:다음 아래에 들여쓰기 

실행할 명령을 코드블록이라 한다.

 

친절하지 않게 작성했는데, 어짜피 내가 복습하려고 쓰는거니까
혹시나 이 글을 읽는 분은 꼭 책을 사서 공부하자

돈 아깝지 않다.

 

ex) 

 

for num(변수) in [0,1,2](리스트):

    print(num)

 

0
1
2

 

이런식으로 출력된다.

 

책에 설명이 친절히 나와있다.

변수의 자리는 리스트에서 가져온 값을 잠시 저장한다. 변수에 들어가는 값은 in뒤 리스트에서 꺼내 쓰는 원리이다.

: 다음 실행 명령이 있는데 이부분을 코드블록이라 하며 리스트의 마지막 값을 가져올때까지 코드블록에 작성된 명령을 반복한다. 이 반복하는 것을 for를 이용하는 것

 

같은 원리로 문자열도 출력할 수 있다.

 

>>> charactors = ['앨리스', '도도새', '3월토끼']
>>> for charactors in charactors :
print(charactors )


앨리스
도도새
3월토끼

 

반복변수의 이름을 일반변수와 같이 의미있게 작성하는 것이 이해하기 쉽다는 팁이있었다.

 


>>> characters = ['앨리스', '도도새', '3월토끼']
>>> for character in characters:
print(character)


앨리스
도도새
3월토끼
>>> #파이썬이 단수와 복수 개념을 알아먹는건가? 에 대한 궁금증이 생겼다.
>>> 
>>> 
>>> 
>>> #75page
>>> 
>>> 
>>> 
>>> players=['공작부인', '흰토끼', '하트잭', '모자장수']
>>> for player in players:
print(player, '퇴장!')


공작부인 퇴장!
흰토끼 퇴장!
하트잭 퇴장!
모자장수 퇴장!
>>> 
>>> 
>>> 
>>> 
>>> #문자열 반복 77page
>>> 
>>> 
>>> for letter in '체셔고양이':
print(letter)






 


 

 

들여쓰기

 

77page

 

들여쓰기
:코드블럭을 구분하기 위해 사용한다.


파이썬에서 반복된 구조나 뒤에서 배울 조건을 판단하는 구조등에서는 꼭 들여쓰기를 해야한다

 

보통 띄어쓰기 4번이나 텝을 이용한다

어떤 방식으로 사용해도 상관없으나 하나의 프로그램에서는 한 가지 방법으로 띄어쓰기를 통일해서 사용해야 한다.

섞어쓰면 오류가 발생할 수 있음

아래 두 코드의 차이점은 코드블록을 포함했는지 안했는지의 차이이다.

 


1번 코드

nums=[0,1,2]
for num in nums:
    print(num)
print(nums)

0
1
2
[0, 1, 2]



2번 코드

for num in nums:
    print(num)
    print(nums)

 

0 
[0, 1, 2] 
1 
[0, 1, 2] 
2 
[0, 1, 2]



글로 풀어서 설명하려니 길어지는데

간단히 말하자면 
for의 반복작업을 수행하는 범위(코드블록)를 들여쓰기를 통해 지정하는 것이다.

즉, 1번은 들여쓰기가 된 부분만 for 반복작업이 수행된 이후에 print 출력이 실행되었다.

반면, 2번은 들여쓰기 된 부분이 쓰여진 순서에 맞게 
for ( print(num) -> print(nums) ) 1회 수행후  
다시 명령으로 올라가서 
for( print(num) -> print(nums) ) 2회째, 3회째 수행되는 모습을 볼수있다.

내려갔다 올라가는 구조임을 알아두자.......
설명을 못하겠다 ㅎㅎ 강의듣자 ㅎㅎ...
내 복습글을 읽는분이 느낌적인 느낌으로 이해는 됐으리라 믿겠다.

 

안되면 책사자 1.5다 디자인도 이쁨


순서열 만들기

 

-> range(끝_값+1)

->range(앞 수, 끝 값+1)

->range(앞 수, 끝 값+1, 증가분) 

파이썬표기대로 쓰면 

range(start, stop[,step]) 여기서 step은 말그대로 보폭 개념으로 step만큼 증가하는 순서


예시) 
>>> for num in range(1, 6, 2):
    print(num)


1
3
5

 

시작인 1부터 2씩 증가해서 5까지(작성한 6 -1까)

 



그동안 순서열을 출력할 때, 리스트를 이용해 순서열을 만들고 [0,1,2,3...,100] print (리스트)로 출력해왔다.

그런데 숫자가 너무 커지면 ?! 그럴때 쓰라고 있는게 range 함수이다.

응용

-> 2단 구구단 만들기

for y in range(1,10):
    print(2,'x',y,'=',2*y)

 

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18


for와 리스트의 인덱스를 활용하여

리스트 값 바꾸기

 

>>> roses=['하얀장미','하얀장미','하얀장미']
>>> for i in range(3):                       
    roses[i]='빨간장미'               i에 숫자 0,1,2 가 인덱스 넘버로 인식

                                           roses[ 인덱스 넘버] = 빨간장미로 바꾸기

 

>>> print(roses)
['빨간장미', '빨간장미', '빨간장미']

 

 


 

 

슬슬 연습문제를 풀면서 복습을 해야함을 느낀다.

 

함수가 돌아가는 원리는 이해하는게 중요한거같다.

 

https://www.youtube.com/watch?v=b7zKknAr1rU&list=PLGPF8gvWLYyontH0PECIUFFUdvATXWQEL&index=39

 

http://www.yes24.com/Product/goods/61410302

 

Hello Coding 한입에 쏙 파이썬

프로그래밍이 두려운 모든 이를 위한 안내서프로그래밍이 처음인가요? 혹은 프.포.자(프로그래밍을 포기한 사람)인가요? 여기 100만이 이미 검증한 파이썬 입문서가 있습니다. 유튜브와 유데미를 통해 강의한 엑기스를 모아 담은 이 책을 펼치면 프포자도, 처음 프로그래밍을 배우는 사람도 파이썬을 쉽게 배울 수 있습니다.지루한 이론...

www.yes24.com

 

관련글 더보기

댓글 영역