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인덱싱 -> 정수형태로 출력 하는 방법을 이용해서 인덱싱으로 두번 출력하는 방법