광주인력개발원 일일포스팅(메모장)

12주차 월 1106 (제어문 for...)

Jumbo96 2023. 11. 6. 16:56
728x90
반응형

 

★복습

1. 제어문 문장들이 실행되는 순서를 제어하는 문장을 제어문(contolstatement)라고 한다.

 

조선문의 중요성

만약 프로그램에 조건문이 없다면 프로그램은 항상 동일한 동작만을 되풀이 할 것이다.

 

3가지의 제어구조

  + 순차구조

  + 선택구조

  + 반복구조

 

if-else문

조건을 주면 참일때 실행 또는 거짓일 때 실행

 

형식

if 조건문 :        

         문장1

--------------------- (들여쓰기.. 한 블록)

else : 

         문장 2

 

2. 논리 연산 진리표

A B A and B A B A or B A not A
True True True True True True True False
True False False True False True False True
False True False False True True    
False False False False False False    

 

 

반복문의 중요성

생활에서는 반복적인 작업이 필요.

반복적이고 단순한 작업은 컴퓨터를 이용하여 자동화

 

반복의 종류

횟수 반복 (for 문) : 정해진 횟수만큼 반복

조건 반복 (while 문) : 특정한 조건이 성립되는 동안 반복

 

 

 

★힉습

예제

 7명의 심판들의 점수를 입력받아 리스트에 저장하고 최소값과 최대값을 리스트에서 제거하는 프로그램
# 제목 : 콘테스트 평가 프로그램

# 7번의 인풋이 필요 (while)
# 입력값이 실수(float)이다.
# 입력받은 값을 리스트에 저장한다.
# 최솟값을 찾아야 한다.
# 최댓값을 찾아야 한다.
scores = list()
count = 0
while count < 7:
    count += 1
    jumsu = input(f'{count}번째 심사위원 점수를 입력하세요:')
    # 소수점 입력시 체크 확인!
    if jumsu.replace('.','').isdecimal():
        scores.append(float(jumsu))
min = min(scores)
max = max(scores)
scores.remove(min)
scores.remove(max)
avg = sum(scores) / len(scores)
print(f'평균은: {avg}입니다.')

 

제어문 for

  • 횟수 반복문
  • 가장 많이 쓰임
  • 리스트/ 튜플/ 문자열의 요소의 갯수만큼 반복한다.
  • for 변수 in 리스트/ 튜플/ 문자열: 실행문1…
ls = [1, 2, 3, 4, 5]
for i in ls:
    print(i)

1

2

3

4

5

print(ls[0])
print(ls[1])
print(ls[2])
print(ls[3])
print(ls[4])

1

2

3

4

5

 

같은 원리인데 제어문을 쓰면 편리하게 출력가능

for i in range(0, 10):
    print(i)

0 부터 10까지 나옴...

for i in range(len(ls)):
    print(ls[i])
    #인덱스를 직접 지정하는 것은 좋은 방법은 아니다.

1 부터  5

list(range(len(ls)))

range타입이라 list로 변환

[0, 1, 2, 3, 4]

a = ['a', 'b', 'c']
for i in a:
    print(i)

a, b, c

for i in range(len(a)):
    print(a[i])

a, b, c

# 자장면을 x그릇 먹으면 무료 쿠폰
for i in range(1, 11):
    print(f'자장면을 {i}그릇 먹었습니다.')
print('무료 쿠폰을 받았습니다.')

자장면을 1그릇 먹었습니다.
...
자장면을 10그릇 먹었습니다.
무료 쿠폰을 받았습니다.

# continue, break, pass
# continue : 해당 조건에서 그 루프가 끝나고 다음 루프로 넘어간다.
# pass : 실행할 코드가 없는 건을 뜻함. (모두 다 실행하고 다음 루프로 넘어간다.)
# break : 반복문 자체를 중단 한다.
for i in range(1, 11):
    if i % 2 == 0:
        continue
    print(i)
    # 1~11 까지 i 로 넘어가면서 2로 나눴을때 0이 아니면 False가 나와 print로 간다.
    # 0이라면 continue

1 3 5 7 9

for i in range(1, 11):
    if i % 2 == 0:
        break
    print(i)
    # 첫 반복문에서 i에 1이 들어가서 출력
    # 2에서 0이 되어 종료

1

for i in range(1,11):
    if i % 2 == 0:
        pass
    print(i)

1부터 10 까지 다 출력

pass는 현재 로직이 생각이 안나지만 뼈대를 구축할 때 사용 나중에 꼭 로직을 채워줘야함.

# 리스트에서 for 쓰기
ls = []
# ls = list()
for i in range(1, 51):
    if i % 5 == 0:
        ls.append(i)
print(ls)

[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

# 딕셔너리에서 for 쓰기
dic = { 'name' :'Merry',
        'num' :1,
        "birth" :'jan'}
dic.items()

 

dict_items([('name', 'Merry'), ('num', 1), ('birth', 'jan')])

for key, value in dic.items():
    print(key,' : ', value)

name  :  Merry
num  :  1
birth  :  jan

# 튜플에서 for 문 쓰기
a = [(1, 2), (3,4), (5, 6)]
for i in a:
    print(i[0] + i[1])

3
7
11

인덱스를 이용하는건 위험할 수 있으니 방어적인 코드

for i, j in a:
    print(i + j)

3

7

11

b = [[1, 2], [3,4], [5,6]]
for i, j in b:
    print(i + j)

3

7

11

for i in range(2, 10):
    for j in range(1,10):
        print( i * j, end= ' ')
    print()

2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81

 

List Comprehension

  • 리스트 안에 for 문을 포함하여 한 줄!!로 편하게 코드 작성 하는 문법
  • [표현식 for 항목 in 반복가능객체 if 조건문]
ls = list()
for i in range(1, 5):
    ls.append(i)
    print(ls)

[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]

ls = [i for i in range(1,5)]
print(ls)
# for 문 range만큼 i에 반복해서 for의 i 가 표현식 i로 이동 ls에 리턴

[1, 2, 3, 4]

ls = list()
for i in range(1,5):
    if i % 2 == 0:
        ls.append(i)
print(ls)

[2, 4]

ls = [i for i in range(1, 5) if i % 2 == 0]
print(ls)
# 1,5의 i 가 2로 나누어 나머지가 0일경우 (짝수일때) ls 에 리턴

[2, 4]

ls = list()
for i in range(1, 5):
    if i % 2 == 0:
        ls.append(i * 4)
print(ls)

[8, 16]

ls = [i * 4 for i in range(1,5) if i % 2 == 0]
print(ls)

[8, 16]

a = list(range(1,5))
ls = [i * 4 for i in a if i % 2 == 0]
print(ls)

[8, 16]

# [표현식 for 항목1 in 반복가능객체1 if 조건문1 for 항목2 in 반복가능객체 if 조건문2...]
gugudan = list()
for i in range(2, 10):
    for j in range(1, 10):
        gugudan.append(i * j)
print(gugudan)

[2, 4, 6, 8, 10, 12, 14, 16,...81]

gugudan = [i * j for i in range(2, 10) for j in range(1, 10)]
print(gugudan)

[2, 4, 6, 8, 10, 12, 14, 16,...81]

 

리스트 위주로 자주 쓰이지만 딕셔너리에서도 사용 가능(동적으로 만들 때) 

# Dict comprehension
names = ['Marry', 'John', 'Chris']
num = [1, 2, 3]
dic = {names[i]:num[i] for i in range(len(names))}

{'Marry': 1, 'John': 2, 'Chris': 3}

dic1 = dict()
for i in range(len(names)):
    dic1[names[i]] = num[i]

{'Marry': 1, 'John': 2, 'Chris': 3}

dic = { k : v  for k, v in zip(names, num)}

{'Marry': 1, 'John': 2, 'Chris': 3}

 

728x90
반응형