반응형
코딩의 핵심 : for in collection
특정 조건에서 반복문을 수행 할 때, range() 함수를 사용할 수 있다.
range(1, 10, 2)
위의 경우 1부터 10까지 2씩 건넌 숫자를 말한다.
1, 3, 5, 7, 9의 순서로 실행된다.
for v1 in range(10): # 0~9
print('V1 is : ', v1)
for v2 in range(1, 11): # 1~10
print('V2 is : ', v2)
for v3 in range(1, 11, 2): # 1~10 중 두개씩 건너뜀( 1, 3, 5 ,7, 9 )
print('V3 is : ', v3)
반복문을 응용해본다면!
1~1000까지의 합을 구해보자.
sum1 = 0
for v in range(1, 1001):
sum1 += v
print('1 ~ 1000 Sum : ', sum1)
>>> 1 ~ 1000 Sum : 500500
sum() 함수를 사용하면 더 간단하게 구할 수 있다.
print('1 ~ 1000 Sum :', sum(range(1, 1001)))
>>> 1 ~ 1000 Sum : 500500
아래처럼 응용하여 4배수의 합도 구할 수 있다,
print('1~ 1000 4의 배수의 합 : ', sum(range(4, 1001, 4)))
>>> 1~ 1000 4의 배수의 합 : 125500
Iterables 자료형
문자열, 리스트, 튜플, 집합, 딕셔너리
* iterable 함수 : range, reversed, enumerate, filter, map, zip
- 리스트
# 예제 1
names = ['Kim', 'Park', 'Cho', 'Yoo']
for i in names:
print('you are : ', i)
>>> you are : Kim
>>> you are : Park
>>> you are : Cho
>>> you are : Yoo
# 예제 2
lotto_numbers = [11, 14, 34, 1, 31, 20]
for n in lotto_numbers:
print('Current number : ', n)
>>> Current number : 11
>>> Current number : 14
>>> Current number : 34
>>> Current number : 1
>>> Current number : 31
>>> Current number : 20
- 문자열
word = 'Beautiful'
for s in word:
print('word : ', s)
>>> word : B
>>> word : e
>>> word : a
>>> word : u
>>> word : t
>>> word : i
>>> word : f
>>> word : u
>>> word : l
응용문제 : 문자열을 대문자로 출력해보자.
name = 'FineAppLE'
# 대문자면 참, 소문자면 거짓으로 출력
for n in name:
if n.isupper():
print("True")
elif n.islower():
print("False")
>>> True
>>> False
>>> False
>>> False
>>> True
>>> False
>>> False
>>> True
>>> True
isupper() / islower()을사용하여 대소문자를 판별 할 수 있고,
대소문자로 변경할 수 도 있다.
print(name.upper())
>>> FINEAPPLE
- 딕셔너리
my_info = {
'name': 'Lee',
'Age': 33,
'City': 'Seoul'
}
# key 값만 가져옴
for key in my_info:
print('Key :', my_info[key])
>>> Key : Lee
>>> Key : 33
>>> Key : Seoul
# value 반환
for v in my_info.values():
print('value : ', v)
>>> value : Lee
>>> value : 33
>>> value : Seoul
반복문에 브레이크를 걸어보자
반복문 안에서 즉시 멈추고 싶을 때
# break (즉시 멈춤)
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]
for num in numbers:
if num == 34:
print("Found : 34!")
break
else:
print("Not found : ", num)
>>> Found : 34!
반복문에서 건너뛰기
반복문 안에서 건너뛰고 싶을 때 continue를 사용하면 되는데, 사용방법은 아래와 같다.
type이 boolean형일 경우 건너 뛴다는 조건을 걸고 코드를 실행해보면
아래 결과처럼 v가 True인 경우를 제외한 나머지 값에 대해서만 출력 되는 것을 볼 수 있다.
lt = ["1", 2, 5, True, 4.3, complex(4)]
for v in lt:
if type(v) is bool:
continue
print("current type : ", type(v))
print("multiply by 2:", v * 3)
>>> current type : <class 'str'>
>>> multiply by 2: 111
>>> current type : <class 'int'>
>>> multiply by 2: 6
>>> current type : <class 'int'>
>>> multiply by 2: 15
>>> current type : <class 'float'>
>>> multiply by 2: 12.899999999999999
>>> current type : <class 'complex'>
>>> multiply by 2: (12+0j)
for - else 구문은 처음이죠?
num == 24인 경우 break문을 만나서 즉시 중단하게 된다.
# for - else 구문
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]
for num in numbers:
if num == 24:
print("Found : 24!")
break
else:
print("Not Found 24...")
>>> Found : 24!
만약 numbers에 존재 하지 않는 값으로 변경한다면?
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]
for num in numbers:
if num == 54:
print("Found : 54!")
break
else:
print("Not Found 54...")
else 구문으로 빠져 Not Found 54...가 출력된다.
For문으로 구구단도 만들 수 있죠!
중첩하여 반복문을 사용할 수 있다.
# 구구단 출력
for i in range(2, 10): # 2 ~ 9
for j in range(2, 10):
print('{:4d}'.format(i * j), end='')
print()
>>> 4 6 8 10 12 14 16 18
>>> 6 9 12 15 18 21 24 27
>>> 8 12 16 20 24 28 32 36
>>> 10 15 20 25 30 35 40 45
>>> 12 18 24 30 36 42 48 54
>>> 14 21 28 35 42 49 56 63
>>> 16 24 32 40 48 56 64 72
>>> 18 27 36 45 54 63 72 81
변환 예제
# 변환 예제
name = 'Aceman'
print('Reversed : ', reversed(name))
print('List : ', list(reversed(name)))
print('Tuple : ', tuple(reversed(name)))
print('Set : ', set(reversed(name))) # 순서 X
>>> Reversed : <reversed object at 0x00000247C9BFB5B0>
>>> List : ['n', 'a', 'm', 'e', 'c', 'A']
>>> Tuple : ('n', 'a', 'm', 'e', 'c', 'A')
>>> Set : {'n', 'm', 'A', 'a', 'e', 'c'}
해당 글은 인프런의 [프로그래밍 시작하기 : 파이썬 입문-Inflearn Original ] 강의를 듣고 정리한 개인적인 학습 노트 입니다.
반응형