코딩 테스트 준비/Python 이론

파이썬 이론(반복문)

gugigugi92 2023. 2. 25. 22:42

반복문

       일일이 코드를 작성하지 않고

       반복할 횟수를 정해두고

       동일한 코드 블록을 여러 번 실행하는데 사용된다. 

       반복문에는 for문, while문이 존재한다

 

 

while문의 구조

      while <조건문>:

           <수행할 문장1>

           <수행할 문장2>

           <수행할 문장3>

           ...

 

 

#while
#열번 찍어 안넘어가는 나무 없다
treeHit = 0 # 초기화
while treeHit < 10 : # teehit를 0부터 9까지 10번 반복
    treeHit = treeHit +1 #1번부터 찍기위해 +1
    print("나무를 %d번 찎었습니다." % treeHit) #treehit 의 값을 %d 위치
    if treeHit == 10: # treehit가 10이될때 
        print("나무 넘어갑니다.") # 해당 출력문 실행

출력결과


#break : 반복문을 종료
coffee = 5
money = 100
while money:
    print("돈을 받았으니 커피를 줍니다.") #커피를 주어서
    coffee = coffee -1 # 커피 -1
    print("남은 커피의 양은 %d개입니다."%coffee) #-1 되어 남은 커피 출력
    if not coffee: #-1 되던 커피가 0(false)이될때 not 즉 ture가 되어 아래 실행
        print("커피가 다 떨어졌습니다. 판매를 중지합니다") #판매를 중지 출력
        break #while 문에서 money 의값이 제한되있지 않기때문에 break가 없으면 무한실행된다

출력결과


#continue : while문 실행중 contiue가 있으면 while문 처음으로 돌아온다
a=0
while a<10:
    a=a+1 #a는 1부터 시작하기위함 
    if a%2 ==0: #2를 나눴을 때 나머지가 0이면 즉 짝수이면
        continue # 짝수일때 출력하지 않고 while문 처음으로 이동
    print(a)

출력결과


for문의 구조

           for 변수 in 리스트(또는 튜플, 문자열):

           수행할 문장1

           수행할 문장2

           .....

#for문
test_list = ['one','two','three']
for i in test_list: #list에있는 값들을 하나씩i에 저장하고
    print(i) #출력한다

출력결과

a=[(1,2),(3,4),(5,6)]#list 안에 튜플
for (first, last) in a: #튜플의 구조에 따라 두개의 변수로 저장
    print(first) #1,3,5 
    print(last) #2,4,6
    #첫번째 튜플부터 순서대로 출력된다

print()
for(first,last) in a:    
    print(first+last)#각튜플의 합을 출력하는 방법

출력결과

#60점이 넘으면 합격이고 그렇지 않으면 불합격
marks = [90, 25, 67, 45, 80]
number = 0 #학생 초기값 0
for mark in marks: #marks의 리스트안에 하나하나 값들을 순서대로 mark라는 변수의 이름으로 사용해 반복문을 실행
    number = number +1 # 1번부터 출력하기 위해
    if mark >= 60: #mark가 60보다 크면 아래 출력문 실행 
        print("%d번 학생은 %d점이므로 합격입니다."% (number, mark))
    else:#mark 가 60보다 작으면 아래 출력문 실행
        print("%d번 학생은 %d점이므로 불합격입니다."% (number,mark))

출력결과

 

 #continue를 사용하여 합격생 축하해주기
marks = [90, 25, 67, 45, 80]
number = 0 # 초기값 0
for mark in marks: #marks의 리스트안에 하나하나 값들을 순서대로 mark라는 변수의 이름으로 사용해 반복문을 실행
    number = number +1 # 1번부터 출력하기 위해
    if mark >=60:
        print("%d번 학생 축하합니다 합격입니다"% number)
        continue # 60미만일때 다음 for문 실행       
    
    # mark를 60이하로 기준했을때 아래코드로 같은 결과값이 나온다
    # if mark <60: continue
    # print("%d번 학생 축하합니다 합격입니다"% number)

출력결과

#range = x는 최솟값 이상 최댓값 미만
sum =0
for i in range(1,11): # 1<=x<11
    print(i)
    sum=sum+i #sum에 sum+1를 누적 i값에 하나씩 대입되어 활용 
              # 1회차 (sum =0) + (i=1) =1 -> 해당 값을 sum에 저장
              # 2회차 (sum =1) + (i=2) =3 -> 해당 값을 sum에 저장
              # 3회차 (sum =3) + (i=3) =6 -> 해당 값을 sum에 저장
              # 4회차 (sum =6) + (i=4) =10 -> 해당 값을 sum에 저장
              # 5회차 (sum =10) + (i=5) =15 -> 해당 값을 sum에 저장
              # 6회차 (sum =15) + (i=6) =21 -> 해당 값을 sum에 저장
              # 7회차 (sum =21) + (i=7) =28 -> 해당 값을 sum에 저장
              # 8회차 (sum =28) + (i=8) =36 -> 해당 값을 sum에 저장
              # 9회차 (sum =36) + (i=9) =45 -> 해당 값을 sum에 저장
              # 10회차 (sum =45) + (i=10) =55 -> 해당 값을 sum에 저장
print(sum)

출력결과

 

위 코드의 계산과정↓

sum =0
for i in range(1,11): # 1<=x<11 
    sum=sum+i 
    print("sum의 값%d i의 값%d 의 합은%d"%(sum-i,i,sum))
print()
print("마지막 계산결과는 %d이다"%sum)

출력결과


#2중 for문으로 구구단을 만들어보자
for i in range(2,10):#2~9까지
    for j in range(1,10):#1~10까지 # 안에 코드가 실행이 되어야 바깥 다음 for문으로 이동
      print("%dx%d = %d"%(i,j,i*j))# i(2단부터)xj(1부터) = 곲한 값   
    print()

출력결과

 

#구구단 결과 값만 출력
for i in range(2,10):
    for j in range(1,10): 
        print(i*j, end=" ") #end = print 함수의 옵션, 한줄씩 띄지 않고 옆칸에 " "를 해줌으로써 한칸씩 이어서 출력 
    print() #i단이 끝나면 한칸 띄기

출력결과


# 리스트 내포(List comprehension)
a =[1,2,3,4]
#a리스트의 값들을 하나씩 num 이라는 변수에 저장하여 num*3 의 값을 result에 저장하겠다
result = [num *3 for num in a] 
print(result)#[3,6,9,12]

#조건문 추가
result = [num*3 for num in a if num % 2==0]#*3한 값들중 2로 나누었을때 나머지가 0인 값, 즉 짝수를 출력
print(result) #[6,12]

#↑코드는 해당 코드를 줄인것
result =[]
for num in a:
    if num%2 ==0:
        result.append(num*3) #.append는 리스트 객체에서 새로운 요소를 추가할때 사용 비어있는 result에 리스트를 추가
print(result)

출력결과


#해당 코드를 한줄로 바꿔보기
#구구단결과 값 result에 담기
result =[]
for x in range(2,10):
    for y in range(1,10):
        result.append(x*y) 
print(result)
print()
result1 =[x*y for x in range(2,10) for y in range(1,10)]
#[가져오고 싶은 값] 반복문 [변수명] in 리스트 2번째 반복문 변수명 in 리스트
print(result1)

같은 리스트 결과 값 출력