코딩 테스트 준비/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)