Python #13 l 파이썬의 제어문_반복문 for

신승호·2021년 3월 2일
0

Python

목록 보기
14/35
post-custom-banner

List

  • 파이썬의 제어문
    • 조건문 if
    • 반복문 while
    • 반복문 for
    • 연습 문제

파이썬의 제어문_반복문 for


for문

기본구조

for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...
  • 리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 "수행할 문장1", "수행할 문장2" 등이 수행된다.

전형적인 for문

>>> test_list = ['one', 'two', 'three'] 
>>> for i in test_list: # 리스트의 첫 번째 요소인 'one'부터 'three' 까지 차례 i 변수에 대입
...     print(i) # print(i) 문장을 차례로 수행
... 
one 
two 
three

다양한 for문의 사용

>>> a = [(1,2), (3,4), (5,6)] # 요소값이 튜플임
>>> for (first, last) in a:
...     print(first + last) # 요소가 자동으로 (first, last) 변수에 대입 
...
3
7
11

for문의 응용

  • "총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다. 합격인지 불합격인지 결과를 보여 주시오."
>>>marks = [90, 25, 67, 45, 80]
>>>number = 0 # 이는 리스트 요소마다 이름을 주기 위해서 
>>> for mark in marks:
	number = number + 1
	if mark >= 60:
		print('%d student is pass' % number)
	elif mark < 60:
		print('%d student is fail' % number )

		
1 student is pass
2 student is fail
3 student is pass
4 student is fail
5 student is pass

for문과 continue

  • while문에서의 continue 와 같이 특정 조건이 참일 때 맨 처음 문장으로 돌아간다.
  • '60점 이하인 사람한테 수업을 다시들어야 한다고 메세지 보내라'
>>>marks = [90, 25, 67, 45, 80]

>>> number = 0
>>> for mark in marks:
	number = number + 1
	if mark >= 60:
		continue
	print('%d student is fail. take this class again' % number)

	
2 student is fail. take this class again
4 student is fail. take this class again

for문과 함께 자주 사용하는 range 함수

range 함수

-'range(시작 숫자,끝 숫자)`: 숫자 리스트를 자동으로 만들어 주며, 시작 숫자부터 끝 숫자 전까지를 리스트로 만들어 준다

>> a = range(10)
>> a
range(0, 10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 리스트가 만들어 진것임
  • forrange를 활용해서 1부터 10까지 더하기
>> add = 0 
>> for i in range(1, 11): 
...     add = add + i 
... 
>> print(add)
55
  • len() 함수와 같이 사용 : len() 함수는 리스트안의 요소 개수를 돌려주는 함수다.
>>marks = [90, 25, 67, 45, 80]
>> for number in range(len(marks)): # len(marks)는 5가 될것임 -> number 변수에는 차례로 0부터 4까지의 숫자가 대입될 것
	if marks[number] < 60: 
		print('%s student is fail, do not cry and study' % (number+1))
	elif marks[number] >= 60:
		print('%s student is pass, but u study more' % (number+1))
1 student is pass, but u study more
2 student is fail, do not cry and study
3 student is pass, but u study more
4 student is fail, do not cry and study
5 student is pass, but u study more
  • for와 range를 이용한 구구단
>> for i in range(2,10):
	for j in range(1,10):
		print('{}*{}={}'. format(i, j, i*j), end =" ")
	print(' ')
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18  
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27  
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36  
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45  
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54  
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63  
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72  
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81  
>> 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  
***`print(i*j, end=" ")` 
이때 `매개변수 end= " "`는 출력 값을 다음줄로 넘기지 않고 그 줄에 계속해서 출력하기 위해서 사용 
***`print(' ')`
매개변수 이후 바로 나오는 `print(' ')`는 두 번째 for문이 끝나면 결괏값을 다음 줄부터 출력하게 해준다

리스트 내포(List comprehension) 사용하기

기본구조

  • 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.
변수 = [표현식 for 항목1 in 반복가능객체1 if]
  • a 리스트의 각 항목에 3을 곱한 결과를 result리스트에 담아라

리스트 내포 사용

>>> a = [1, 2, 3, 4]
>>> result = [num * 3 for num in a]
>>> print(result)
[3, 6, 9, 12]

기본방법

>>> a = [1,2,3,4]
>>> result = []
>>> for num in a:
...     result.append(num*3)
...
>>> print(result) 
[3, 6, 9, 12]
  • if 문 과 결합
[표현식 for 항목1 in 반복가능객체1 if 조건문1
        for 항목2 in 반복가능객체2 if 조건문2
        ...
        for 항목n in 반복가능객체n if 조건문n]

[1,2,3,4,5,6,7,8,9,~,19] 중에서 짝수에만 3을 곱하여 담고 싶다

>>> a = range(0, 20)
>>> result = [num * 3 for num in a if num % 2 == 0]
>>> print(result)
[0, 6, 12, 18, 24, 30, 36, 42, 48, 54]
profile
신승홉니다
post-custom-banner

0개의 댓글