본문 바로가기

Python

[Python] 06

제어문(2)

반복문(loop, iteration)

- 어떤 작업을 한 번 이상 반복해서 수행

- 동일 작업을 여러 번 반복해서 수행해야 하는데, 100번 수행한다고 100줄을 코딩하고 싶지 않을 때 사용

- while, for

※ cf) do while(C, Java)

1. while

- 특정 조건을 만족하는 동안 반복해서 수행

(1) while문 형태

while 조건식:

    조건식이 True일 때 실행할 문장

(2) while문 기본 사용 사례

i = 0

while i < 10:

    print(i)

    i = i + 1 → cf) i += 1

※ 참고

while True:

    수행할 일

    if 탈출조건:

        break

2. for

- 범위나 횟수가 정해져 있는 동안 반복해서 수행

(1) for문 형태

for 변수 in 집합(떼거지):

    반복해서 실행할 문장

(2) for문 기본 사용 사례

for n in [1, 2, 3]:

    print(n) → 첫 번째는 1, 두 번째는 2, 세 번째는 3

※ 무한반복하다가 탈출 → while

※ 유한반복하다가 종료 → for

※ 집합(떼거지)

- 문자열(str), 리스트(list), 튜플(tuple), 레인지(range), 세트(set), 딕셔너리(dictionary)

(1) 문자열(str)

for str in '문자열집합':

    print(str)

(2) 리스트(list) : [] - 일반적인

for lst in ['첫번째', '두번째', '세번째']:

    print(lst)

(3) 튜플(tuple) : () - 수정 불가능

vivaldi_season4 = ('Spring', 'Summer', 'Fall', 'Winter')

for season in vivaldi_season4:

    print(season)

(4) 세트(set)(=집합) : {} - 순서 보장 안함

vivaldi_season4 = {'Spring', 'Summer', 'Fall', 'Winter'}

for season in vivaldi_season4:

    print(season)

 

※ 세트는 리스트보다 못한 것 같은데 왜 쓰는가?

- 중복 제거 : 세트는 중복을 허용하지 않는다.

- 빠른 검색 : 리스트보다 1000배 빠르다.(어떤 값이 어떤 집합 안에 있는지 없는지 검색)

!!!!!!!중요!!!!!!!

(5) 레인지(range) : 초기값, 종료값, 증감값

- 초기값부터 종료값까지 증감값만큼 차이를 갖는 그룹

- 초기값을 생략하면 0

- 종료값은 생략 불가능

- 증감값을 생략하면 1

- range(1, 5, 1) → 1, 2, 3, 4, 5

!!!!!!!초고난이도!!!!!!!

(6) 딕셔너리(dictionary)

- 최근 많이 쓰이는 자료구조형인 key, value로 저장하는 방식

person = {'name':'myname', 'age':100}

for item in person:

    print(item) → key값이 나옴(name, age)

    print(person[item]) → value값을 얻는 방법1

    print(person.get(item)) → value값을 얻는 방법2


 

실습(while)

1. i = 1 일 때 1부터 10까지 출력

i = 1
while i < 11:
    print('{}번 출력'.format(i))
    i = i + 1

 

결과

 

 

 

실습(while True)

1. 1부터 10까지의 숫자 중 하나를 입력받아 출력

while True:
    num = input('1에서부터 10까지의 숫자 중 하나를 입력해주세요 : ')
    if num.isdecimal() == True:  # num이 숫자인지 확인
        # 숫자가 맞으면 도는 로직
        if int(num) >= 1 and int(num) <= 10:
            print('입력하신 숫자는 {}입니다.'.format(num))
            break
        else:
            print('숫자는 맞으나 범위가 잘못되었습니다.')
    else:
        print('{}은 숫자가 아니다'.format(num))

 

결과

 

 

 

실습(for)

1. 문자열 출력

for str in '문자열집합':
    print(str)

 

결과

 

2. list 출력

for lst in ['첫번째', '두번째', '세번째']:
    print(lst)

 

결과

 

3. tuple 출력(값을 순서대로 출력)

vivaldi_season4 = ('Spring', 'Summer', 'Fall', 'Winter')
print(type(vivaldi_season4))

for season in vivaldi_season4:
    print(season)

 

결과

 

4. set 출력(값을 순서에 상관없이 출력)

vivaldi_season4 = {'Spring', 'Summer', 'Fall', 'Winter'}
print(type(vivaldi_season4))

for season in vivaldi_season4:
    print(season)

 

결과

 

5. range 출력

(1) 0부터 4까지 1씩 증가하여 출력

for i in range(5):  # 0, 1, 2, 3, 4
    print(i)

 

결과

(2) 1부터 9까지 1씩 증가하여 출력_1

for i in range(1, 10, 1):  # 1 ~ 9, 10은 포함되지 않음
    print(i)

 

결과

(3) 1부터 9까지 1씩 증가하여 출력_2

- for 문장에서 1부터 9가 순서대로 돌아가며 실행되도록 정해졌기 때문에 중간에 바꿔도 원래대로 돌아간다.

for i in range(1, 10):
    print(i)
    i = 9
    print(i)

 

결과

6. dict 출력

person = {'name':'myname', 'age':100}

for item in person:
    print(item)  # key값이 나옴
    print(person[item])  # value값을 얻는 방법1
    print(person.get(item))  # value값을 얻는 방법2

 

결과

'Python' 카테고리의 다른 글

[Python] 08  (0) 2021.11.23
[Python] 07  (0) 2021.11.21
[Python] 05  (0) 2021.11.18
[Python] 04  (0) 2021.11.17
[Python] 03  (0) 2021.11.15