Python/국비지원 복습

3. 반복문 (while, for)

무민잉 2022. 3. 28. 20:21

While문 : 반복횟수가 명확하지 않을 때 사용. 

- 조건식이 True일 경우 실행문장이 반복됨

- while 조건식 : -> 콜론

          실행문장

          실행문장  (들여쓰기 주의 tab,space*4)

 

# 두 정수를 받아 합을 구하는 법 (반복문을 이용해) , 단 두 수의 합이 0일경우 프로그램 종료
# 3가지 코드입력방법 

# 첫 번째 방법
num1= num2 = 1

while num1+num2>0 :
    num1= int(input("첫 번째 정수 입력 >> "))
    num2= int(input("두 번째 정수 입력 >> "))
  
    if num1+num2== 0 :
        print("프로그램이 종료되었습니다.")
        break
    print(f"두 정수의 합: {num1+num2}")
    
# 두 번째 방법

num1=num2=1
while num1!=0 or num2!=0:
    num1= int(input("첫 번째 정수 입력 >> "))
    num2= int(input("두 번째 정수 입력 >> "))
    if num1 ==0 and num2==0:
        print("프로그램이 종료되었습니다.")
        break
    print(f"두 정수의 합: {num1+num2}")
    
# 첫 번째 두번째 다 while절에 조건식을 주고 두 수의 합이 0일경우를 while문 안에 조건식으로 정하여 풀이해줌, 
# 또한 while문이전에 정수형 전역 변수 두개를 만들어서 조건문을 만드는데 사용

# 세 번째 방법

while True : 
    num3= int(input("첫 번째 정수 입력 >> "))
    num4= int(input("첫 번째 정수 입력 >> "))
     
    
    if num3==0 and num4==0:
        break
    print(f"두 수의 합 : {num3+num4}")   
print("프로그램 종료")

# 조건식이 무조건 True라고 설정 (무한반복문으로 코드를 만드는 방법)
# 전역변수를 만들 필요없음 while문안에서 해결 가능 


# 목표몸무게 달성하는 반복문 만들기 (출력문에 ()주차 감량무게:에 1주->2주처리를 어떻게 해야할지 고민)

weight1= int(input("현재 몸무게 : "))
weight2= int(input("목표 몸무게 : "))
num1=1
while True:
    week=int(input(f"{num1}주차 몸무게 : "))
    weight1-=week
    num1+=1    
    if weight1<=weight2 :
        break    
print(f"{weight1}kg 달성 축하합니다!") 

#Python은 Java처럼 증감연산자를 사용할 수없기 때문에 전역변수를 만들어서 반복될때마다 1씩증가하게 만듬
#복합대입연산자 이용 
# 목표 몸무게보다 적거나 같으면 출력문으로 목표몸무게 달성 축하 출력

for문

- 첫번째 사용법 : 문자열 또는 리스트 또는 튜플이 들어갔을 때 안에 있는 요소를 하나씩 반복 (Java for each문과 유사)

for 변수 in 문자열(or 리스트 or 튜플) : (콜론)

    print(변수) (들여쓰기 tab, space*4)

list_food = ['햄버거', '치킨', '피자']
for food in list_food :
    print(food)
  #  햄버거 
  #  치킨
  #  피자  -> 이런식으로 출력
  

# list자료형 변수 score_list에 들어있는 데이터를 조건식과 비교하여 조건식에 지정된 수보다 크면 합격 적으면 불합격

score_list= [90,45,70,60,55]
num1=1
for score in score_list:
    if score >=60 :
        print(f"{num1}번 학생은 합격입니다.")
        
    else :
        print(f"{num1}번 학생은 불합격입니다.")
        
    num1+=1

 

 

- 두번째 사용법 : range() 함수를 사용하는 방법  (Java의 일반적인 for문과 유사하게 사용)

- 필요한 만큼의 숫자를 만들어내는 유용한 기능

- range(시작할 숫자, 종료할 숫자, 증가량)

 

- range(1,10,1) ->1부터 9까지 1씩 증가

- range(1,100,3) -> 1부터 99까지 3씩증가

- range(10,1,-1) -> 10부터 2까지 1씩감소 (-1씩 증가)

 

for i range(3, 10) : 
    print(i, end = " ")
    # 결과값 3 4 5 6 7 8 9 마지막값을 생략하면 기본으로 1씩 증가하는것으로 인식 , 
    # 출력문에 end = " " 은 출력문 기본값이 end="\n"이기 때문에 출력하면 값이 하나 출력된뒤 한줄아래로 출력되므로 
    # end값을 빈 값으로 두면 값이 한 줄로 평행하게 출력됨


for i in range(10) # range(0,10,1)을 줄여서 씀, 1씩 증가하면서 0부터 9까지의 숫자를 출력한다면 range함수에 0과 1을 생략가능 
    print(i, end= " ")
    # 결과값 0 1 2 3 4 5 6 7 8 9 

 # 그러나 0~10 증가 2-> 증가값이 1이 아니면 생략이 안됨.. 
#매개변수가 2개 있을 시에는 반드시 반드시 시작값, 종료값을 넣어줘야 한다. 
for num in range(1,11,2):
    print(num) 


# 99부터 77까지 1씩 감소하는 값을 나열하라
for num1 in range(99,76,-1):
    print(num1 ,end=" ")
#23부터 39까지 1씩 증가하는 값을 나열하라     
print()
for num2 in range(23,40,1):
    print(num2,end=" ")    
    
# list안에 list값들을 정수형태로 출력시키는 방법 3가지

# 첫 번째

list1 = [[1,2],[3,4],[5,6]]
for a in list1:
    for num in a :
        print(num, end=" ")
 #이중 for문을 만들어서 정수형태의 데이터를 출력받게 만듬
 
 #두 번째
 
 list1 = [[1,2],[3,4],[5,6]]
for num1, num2 in list1:
        print(num1, num2, end=" ")
      
  # 각 list에 들어있는 인덱스값이 동일하다면 변수 두개를 지정해서 출력시키는 방법
  
  #세 번째
  list1 = [[1,2],[3,4],[5,6]]
for num1 in list1:
    print(num1[0],num1[1], end =" ")
    
  # list인덱싱 -> 정수형태로 출력 하는 방법을 이용해서 인덱싱으로 두번 출력하는 방법