빅데이터 프로그래밍/Python

[Python] 07. 제어문 - 반복문(while, for문), for 문 실습

밍글링글링 2017. 8. 2.
728x90

01. 제어문 - 반복문 While, for 문

1. While문

- '참'일동안 실행합니다.

- 조건을 만족하지 않으면 한번도 실행을 하지 않습니다.

- 순환 횟수를 정확히 지정할 수 없을 경우 사용합니다.

 

1) 1씩 증가시키는 누적 알고리즘

su = su + 1 

 

2) 1부터 5까지 출력

- 무한 루틴을 이용하는 경우: while(true){...

- while문에 조건을 명시한 경우: while(index <= 4){...

 

[실행 화면]

1
2
3
4
5
-----------
5
4
3
2
1
-----------
1
2
3
4
5
▷ While1.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

su = 0

while True:
    su = su + 1
    print(su)

    if su == 5:
        break
    
print('-----------------')

su = 6
while 1:  # 0이외의 값은 모두 참처리
    su = su -1
    print(su)
    
    if su == 1:
        break

print('-----------------')

su = 0
while su <= 4:
    su += 1
    print(su)
     

   
-------------------------------------------------------------------------------------
 

 

[실습] 2의 배수이면서 3의 배수, 4의 배수, 5의 배수, 6의 배수, 7, 8, 9의 배수인
   수가 발견되면 출력하고 종료하는 프로그램을 제작하세요. 
① 필수 코드

    su = 0

② while True: 문 선언
③ 2, 3, 4, 5, 6, 7, 8, 9의 배수인 수만 출력
    - if 문에 and를 사용해야함, 나머지: %
 
[실행 화면]
2520
▷ While2.py
- \ +Enter: 문장의 연결을 의미
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

su = 0

while True:
    su = su + 1
    if su % 2 == 0 and su % 3 == 0 and su % 4 == 0 and \
       su % 5 == 0 and su % 6 == 0 and su % 7 == 0 and \
       su % 8 == 0 and su % 9 == 0:
        print(su)
        break
    


-------------------------------------------------------------------------------------​
 

 

* switch ~ case, do ~ while문은 존재하지 않는다.

 

02. 제어문 - 반복문 for문

1. for문

- 반복 횟수가 지정되어 있는 경우 사용합니다.

 

1) 유형 1

for 변수 in 범위:
반복으로 실행할 코드
 

 

2) 유형 2

for 변수 in 범위:
반복으로 실행할 코드
else:
for 구문이 모두 실행되었을 때 실행할 코드

 

 

2. 기본적인 for문의 사용

 

[출력 화면]

A

B
C
1
2
3
--------------
12345
--------------
january
february
march
--------------
1월
2월
3월
--------------
i: 0
i: 1
i: 2
i: 3
i: 4
--------------
1
2
3
--------------
1
2
3
4
for문을 종료했습니다.
▷ For1.py 기초 문법 
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

str1 = 'ABC가나다123'
for c in str1:
    print(c)
print('--------------')

listVal = [1, 2, 3, 4, 5]
for c in listVal:
    print(c, end='')  # end='' 라인 변경 안됨
print()
print('--------------')
    
months = {'january':'1월', 'february':'2월', 'march':'3월'} # Dictionary
for c in months:
    print(c)  # 키
print('--------------')

for c in months:
    print(months[c])  # 값
print('--------------')
            
for i in range(5):  # 0 ~ 4
    print('i: '  + str(i))
print('--------------')

scope = [1, 2, 3, 4, 5]
for x in scope:
    print(x)
    if x < 3:
        continue  
    else:
        break 
print('--------------')

for i in range(1, 5): # 1 ~ 4
    print(i)
else:
    print('for문을 종료했습니다.')


-------------------------------------------------------------------------------------
 

 

3. 1부터 100까지 2의 배수이면서 3의 배수이고 4의 배수인
    수를 출력하는 프로그램을 제작하세요.

① 필수 코드
    index = 0;

    .....
    .....
    print("최종값: " + str(index))
② 1 단계: 1 ~ 100까지 출력

    . for문 사용
③ 2 단계: 2의 배수이면서 3의 배수이고 4의 배수인 수만 출력
    . for문안에 if문이 있어야합니다.
    . if 문에 and를 사용하면 편리합니다.
  

[실행 화면]

12
24
36
48
60
72
84
96
최종값: 100
▷ For2.py
-------------------------------------------------------------------------------------

# -*- coding: utf-8 -*-

index = 0

for index in range(1, 101):
    if index % 2 == 0 and index % 3 == 0 and index % 4 == 0:
        print(index)

print('최종값: ' + str(index))        

  
-------------------------------------------------------------------------------------
 

[실습 1] 구구단 출력 
- 출력할 구구단: 2 

① 1 단계: i 변수를 증가시키며 1부터 9까지 출력 
② 2 단계: 단의 출력 
    2 x 1
    2 x 2
    2 x 3
    ...
    ...
    2 x 9
③ 3 단계: "=" 출력
    2 x 1 =
    2 x 2 =
    2 x 3 =
    ...
    ...
④ 4 단계: 곱하기 결과 출력
    2 x 1 = 2
    2 x 2 = 4
    2 x 3 = 6
    ...
    ...
    2 x 9 = 18 

 

[실행 화면]

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 

▷ Gugudan.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

for i in range(1, 10):
    print('2 × ' + str(i) + ' = ' + str(2 * i))
    


-------------------------------------------------------------------------------------

 

 

 

[실습 2] 1단 ~ 18단까지 구구단 출력 
- for문은 다른 for문을 요소로 가지고 있을 수 있습니다.
- for문이 2개 사용됩니다. 
예) 실시간 펜션 예약 시스템: http://hae5reum.com/ 

① Gugudan.py 복제하여 Gugudan2.py를 생성합니다. 
② 'dan' 이라는 변수가 선언된 for 문을 이용하여 2단을 18번 출력하는
    for문을 작성하세요. 기존에 작성된 for문은 소스가 변경되지 않습니다.
③ 출력 부분을 변경하여 1단부터 18단까지 출력하세요.
④ 출력되는 단의 제목을 추가하세요. 예) 1 단

 

[실행 화면]
1단 
1 x 1 = 1 
1 x 2 = 2 
1 x 3 = 3 
1 x 4 = 4 
1 x 5 = 5 
1 x 6 = 6 
1 x 7 = 7 
1 x 8 = 8 
1 x 9 = 9 
2단 
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 
3단 
3 x 1 = 3 
3 x 2 = 4 
3 x 3 = 9 
3 x 4 = 12 
3 x 5 = 15 
3 x 6 = 18 
3 x 7 = 21 
3 x 8 = 24 
3 x 9 = 27 
...
...
...

▷ Gugudan2.java 
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

for dan in range(1, 19):
    print()
    print(str(dan) + ' 단')
    
    for i in range(1, 10):
        print(str(dan) + ' × ' + str(i) + ' = ' + str(dan * i))
     

-------------------------------------------------------------------------------------

 

 

 

[과제 1] 1부터 100까지의 합을 구하세요.

[실행 화면]

5050
▷ For3.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

tot = 0
for i in range(1, 101):
    tot = tot + i 

print('1부터 100까지의 합: ' + str(tot))
     

-------------------------------------------------------------------------------------
 

 

[과제 2] 1부터 100까지의 짝수의 합과 홀수의 합을 구하세요.


[실행 화면]
짝수의 합: 2550
홀수의 합: 2500
▷ For4.py
-------------------------------------------------------------------------------------
# -*- coding: utf-8 -*-

even = 0
odd = 0

for i in range(1, 101):
    if (i % 2 == 0):
        even = even + i
    else:
        odd = odd + i    

print('짝수의 합: '  + str(even))
print('홀수의 합: '  + str(odd))


-------------------------------------------------------------------------------------
 

728x90

댓글