간단 지식/Python

06. 조건문과 반복문

납작한돌맹이 2021. 7. 7. 10:25
반응형

파이썬에서는 공백이 정말 중요하다. 다른 언어에서는 탭을 하던 스페이스를 누르던 빌드에 아무 문제가 없었지만, 파이썬에서는 공백 문자인만큼 어떻게 하느냐에 따라 빌드가 실패할 수 있다. 따라서 들여쓰기에는 탭보단 공백4개를 입력하는게 일반적이다. 조건문 혹은 반복문에서 공백에 의한 에러를 자주 만날 수 있으니 주의하자.

 

  • if문
>>> happy = True
>>> sad = False
>>> if happy == sad:
	print("happy and sad")
    else:
	print("happy")
	print("sad")

	
happy
sad

조건이 많다면 elif를 사용할 수 있다.

if score >= 90:
    print('A학점')
elif score >= 80:
    print('B학점')
elif score >= 70:
    print('C학점')
elif score >= 60:
    print('D학점')
else:
    print('F학점')

 

  • for문

for문은 파이썬 자료형 중 리스트, 딕셔너리 등의 값을 유용하게 출력할 수 있다.

>>> for num in [1,2,3]:
        print(num)
1
2
3

>>> for st in ['hello', 'world', 'python']:
    print(st)
hello
world
python

>>> score = {'국어':95, '영어':90, '수학':80}
>>> for item in score.keys():
        print(item)
국어
영어
수학
>>> for item in score.values():
        print(item)
95
90
80
>>> for key, value in score.items():
        print('{0}과목 점수는 {1}점 입니다'.format(key, value))
국어과목 점수는 95점 입니다
영어과목 점수는 90점 입니다
수학과목 점수는 80점 입니다

 

이렇게 in 다음에 컬렉션이 오는 for문이 있고, range()를 사용하는 for문이 있다. range()는 지정된 범위 내 값을 생성하기 위한 내장함수이다. 사용 형식은 다음과 같다.

range(start, stop, step)

ex) range(10) -> 0,1,2,3,4,5,6,7,8,9

     range(1, 11) -> 1,2,3,4,5,6,7,8,9,10

     ragne(1, 11, 2) -> 1,3,5,7,9

 

>>> for i in range(0,11,2):
        print(i)
0
2
4
6
8
10

 

특이하게도 파이썬의 for문에는 else를 사용할 수 있다. else 블록에 해당하는 부분은 반복 종료 시 실행된다.

for i in range(1,10):
    ans = 2*i
    print('2x{0} = {1}'.format(i, ans))
else:
    print('구구단 2단을 종료합니다')

 

  • while문

while문에도 else를 사용할 수 있다. 마찬가지로 else 블록에 해당하는 부분은 반복 종료 시 실행된다.

a=0
while a <10:
    print(a)
    a += 1
else:
    print('a가 {0}이므로 종료합니다'.format(a))

무한 반복을 할 필요가 있다면 for문보다 while문 사용을 추천한다. 이럴 때 조건은 True로 정하고, 종료조건을 추가하여 break로 루프를 탈출하면 된다.

x = 0
while True:
    x +=3
    print(x)
    if x>100 and x%3 == 0:
        break

 

  • list comprehension

리스트 각 element들에 대해 연산을 수행하면서 업데이트를 하는 반복문을 list comprehension이라고 한다. 사용 형태는 다음과 같다.

[표현식 for 변수 in 리스트객체]

>>> list1 = list(range(1,11))
>>> print(list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list2 = [i*2 for i in list1]
>>> list2
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

이 코드를 for문으로만 구현할수도 있긴 하지만, 이왕 파이썬에서 제공하는 리스트 가공 처리 기법도 써보도록 하자.

 

여기서 더 발전하면 element를 필터링할 수도 있다.

[표현식 for 변수 in 리스트객체 if 조건식]

>>> list1 = list(range(1,11))
>>> print(list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list3 = [i**2 for i in list1 if i %2 ==1]
>>> list3
[1, 9, 25, 49, 81]

 

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

반응형