빅데이터 서비스 교육/Python

Python 반복문(while, for)

Manly 2022. 4. 29. 14:50
반응형

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

# 기본구조
while 조건식:
    실행문장
    실행문장2
    if 조건식:
        실행문장

 

# 간단 while문 실습 :  1~3까지 출력
number = 1
while number <=3:

 

 


    print(number)
    number +=1   # Python에는 ++없다

1
2
3

 

# break 멈추는 키워드:  while문을 멈춤
# 1~3출력
number = 1
while True:
    print(number)
    number +=1
    if number>3:
        break

1
2
3

 

# while문 활용해서 '파이썬 최고!' 13번 출력해보기

 

number=1
s = '파이썬 최고!'

while True:
    print(s)
    number +=1
    if number>13:
        break

-----------------------

number=1
s = '파이썬 최고!'
while number<=13:
    print(s)
    number += 1

 

# 두개의 정수를 입력 받아서 더하는 코드를 작성하시오
#(단, 두개의 정수가 0이 들어올 때 까지 반복한다.)
while True:
    a = int(input('첫 번째 정수 입력 >> '))
    b = int(input('두 번째 정수 입력 >> '))
    if a==0 and b==0:
        print('프로그램이 종료되었습니다')
        break
    print(f'두 정수의 합 : {a+b}')
                                                                                                              ### 들여쓰기 주의해서 

첫 번째 정수 입력 >> 1
두 번째 정수 입력 >> 2
두 정수의 합 : 3
첫 번째 정수 입력 >> 7
두 번째 정수 입력 >> 3
두 정수의 합 : 10
첫 번째 정수 입력 >> 13
두 번째 정수 입력 >> 77
두 정수의 합 : 90
첫 번째 정수 입력 >> 0
두 번째 정수 입력 >> 0
프로그램이 종료되었습니다

현재 몸무게 : 80
목표 몸무게 : 70
1주차 감량 몸무게 : 2
2주차 감량 몸무게 : 3
3주차 감량 몸무게 : 4
4주차 감량 몸무게 : 5
66kg 달성!! 축하합니다!!

# for
 - 반복 횟수가 명확할 때

# 기본구조 - 대상들의 크기(길이)만큼 반복
for 변수 in 문자열(or 리스트 or 튜플):
    print(변수)  #들여쓰기
    

 



    print(food)   #여기서 변수 food에는 for문에서 반복될 동안 초기화 후 문자
                  #하나만 들어간다  -> 최종적으론 food에 피자 하나만 들어있다

 

 

 

# 튜플 for 예시
tp_ice = ('아몬드봉봉','뉴욕치즈','사빠딸','초코나무숲')
for ice in tp_ice:
    print(ice)

아몬드봉봉
뉴욕치즈
사빠딸
초코나무숲

# 문자열 for 예시
hi = '안녕!나는재연이야'
for i in hi:
    print(i)

안
녕
!
나
는
재
연
이
야

hi = '안녕!나는재연이야'
for i in hi:
    print(i,end = '')              -> 개행 없이 순서대로 가로로 출력 /

                                         한칸씩 띄고싶으면 end = ' ' 따옴표 안에 띄어쓰기

안녕!나는재연이야

 

# 이중리스트
lst = [['현우','A'],['재우','AB'],['나윤','B'],['김중','A'],['진석','O']]

 

# 각 사람의 혈액형만 출력
for i in lst:
    print(i[1])
    
# print(lst[0][1])   를 반복문으로 위와 같이 쓸수 있다.
# print(lst[1][1])
# print(lst[2][1])
# print(lst[3][1])
# print(lst[4][1])

 

 

 

# 5명에 대한 정보처리기사 자격증 시험 점수가 리스트에 담겨있다.
# 이때 각 점수가 합격 점수인지 불합격 점수인지 판별하여 출력하시오 (60이상합격)

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

 

 

#인덱스번호를 알수있는 함수 사용
for i in score_list:   
    if i>=60:
        print(f'{score_list.index(i)+1}번 학생은 합격입니다.')
    else:
        print(f'{score_list.index(i)+1}번 학생은 불합격입니다.')        # 리스트의 인덱스번호를 알려주는함수

                                                                            # 리스트.index(i)+1   -> 값이 i인 데이터의 인덱스번호 +1    

1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 합격입니다.
5번 학생은 불합격입니다.

## range()함수

- 필요한 만큼의 숫자를 만들어내는 유용한 기능
- range(시작할숫자,종료할 숫자,증가량)
- range(1,10,1) -> 1부터 9까지 1씩 증가
- range(1,100,3) -> 1부터 99까지 3씩 증가
- range(10,1,-1) -> 10부터 2까지 -1씩 감소

 

* range 내 생략

  • range(기본값=>0,종료할숫자,기본값=>1)
  • 시작값의 기본값=0, 증감값의 기본값=1 : 생략가능
  • range(3,10) -> 3부터 9까지 1씩 증가
  • range(10) -> 0부터 9까지 1씩증가

 

# range()예제

for i in range(1,10,1):
    print(i,end=' ')

1 2 3 4 5 6 7 8 9 

# range()예제

for i in range(10,1,-1):
    print(i,end=' ')

10 9 8 7 6 5 4 3 2 

for i in range(3,10):
    print(i,end=' ')            -> 증감값 생략(기본:1)

3 4 5 6 7 8 9 

for i in range(8):
    print(i,end=' ')          -> 시작값 생략 (기본:0), 증감값 생략(기본:1)

0 1 2 3 4 5 6 7

food_list = ['햄버거','타꼬야끼','핫도그']
for i in range(3):
    print(i)

0
1
2

food_lst = ['햄버거','타꼬야끼','핫도그']
for i in range(3):               -> 3은 리스트의 길이 이므로 len(food_lst)이다
    print(food_lst[i])

햄버거
타꼬야끼
핫도그

# 5명에 대한 정보처리기사 자격증 시험 점수가 리스트에 담겨있다.     

--이번엔 range() 함수를 써서..
# 이때 각 점수가 합격 점수인지 불합격 점수인지 판별하여 출력하시오 (60이상합격)

 

score_list = [90,45,70,60,55]

for i in range(len(score_list)):                        #range(len(score_list)) -> range(5) -> 0부터 4까지 변수i에 넣는다 ==> 인덱스번호
    if score_list[i]>=60:                                          # 이제 i가 인덱스 번호를 받아오니까 print문과 if의 조건식을 바꿔준다.
        print(f'{i+1}번 학생은 합격입니다.')
    else:
        print(f'{i+1}번 학생은 불합격입니다.')     

 

1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 합격입니다.
5번 학생은 불합격입니다.

 

# For문을 이용하여 다음 list에 들어있는 요소 중 가장 큰 수를 찾아 출력하세요
list2 = [4,5,2,1,99,15,2,7,27]
# 최댓값
max_num = list2[0]

for i in range(len(list2)):
    if list2[i] > max_num:
        max_num = list2[i]

 

for i in list2:
    if i>max_num:            #range()함수 안쓰고 이렇게도 가능
        max_num = i


max_num 

99

# 1부터 100사이의 숫자 중 3의 배수인 값들의 합을 출력
sum = 0
for i in range(1,101):
    if i%3==0:
        sum+=i
print(sum)       

1683

# for문을 이용하여 구구단 2단을 출력하시오
for i in range(1,10):
    print(f'2*{i} = {i*2}')

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

영화리뷰데이터 활용 for문 실습

  • pkl: pickle 확장자
  • pickle 라이브러리: 데이터의 형식을 그대로 보존하면서 저장하는 도구

import pickle #라이브러리 불러오기
# 파일 입출력(다루는 방법)
with open('movie_review.pkl', 'rb') as f:
    data = pickle.load(f)
data   

[['아 더빙.. 진짜 짜증나네요 목소리', 0],
 ['흠...포스터보고 초딩영화줄....오버연기조차 가볍지 않구나', 1],
 ['너무재밓었다그래서보는것을추천한다', 0],
 ['교도소 이야기구먼 ..솔직히 재미는 없다..평점 조정', 0],
 ['사이몬페그의 익살스런 연기가 돋보였던 영화!스파이더맨에서 늙어보이기만 했던 커스틴 던스트가 너무나도 이뻐보였다', 1],
 ['막 걸음마 뗀 3세부터 초등학교 1학년생인 8살용영화.ㅋㅋㅋ...별반개도 아까움.', 0],
 ['원작의 긴장감을 제대로 살려내지못했다.', 0],
 ['별 반개도 아깝다 욕나온다 이응경 길용우 연기생활이몇년인지..정말 발로해도 그것보단 낫겟다 납치.감금만반복반복..이드라마는 가족도없다 연기못하는사람만모엿네',
  0],
 ['액션이 없는데도 재미 있는 몇안되는 영화', 1],
 ['왜케 평점이 낮은건데? 꽤 볼만한데.. 헐리우드식 화려함에만 너무 길들여져 있나?', 1],
 ['걍인피니트가짱이다.진짜짱이다♥', 1],
 ['볼때마다 눈물나서 죽겠다90년대의 향수자극!!허진호는 감성절제멜로의 달인이다~', 1],
 ['울면서 손들고 횡단보도 건널때 뛰쳐나올뻔 이범수 연기 드럽게못해', 0],

 등등.... 총 5000개의 리뷰

#리스트 앞에서부터 5개 출력해보기
data[:5]

# 자료 담은 형식 -> 0번째 인덱스 : 리뷰문장, 1번째 인덱스: 감성(0:부정, 1:긍정)
print(data[0][0]) #리뷰문장
print(data[0][1]) #감정

아 더빙.. 진짜 짜증나네요 목소리
0

len(data)

5000

result=0
for i in data:
    result += len(i[0])
    
print(f'리뷰의 평균 길이는 \'{result/5000}\'입니다.')    
    

리뷰의 평균 길이는 '35.4866'입니다.

 

긍정 리뷰 부정 리뷰 개수 카운팅

0-> 부정 , 1->긍정

 

bad = 0
gd =0
for i in data:
    if i[1] == 0:
        bad += 1
    elif i[1] == 1:
        gd += 1
print(f"긍정리뷰는 {gd}개 입니다")
print(f"부정리뷰는 {bad}개 입니다")  

긍정리뷰는 '2499'개 입니다
부정리뷰는 '2501'개 입니다

 

ㅋ이 포함된 리뷰 갯수는?

sum =0
for i in data:
    if 'ㅋ' in i[0] :
        sum += 1
print(f"'ㅋ'가 포함된 리뷰는 {sum}개 입니다.")      

'ㅋ'가 포함된 리뷰는 328개 입니다.

-> 입력받은 문자가가 포함된 리뷰를 구하려면? 

s = input('찾을 문자를 입력하세요>>')

 
for i in data:
    if s in i[0] :
        sum += 1
 
 
학급에 총 10명 학생이 있고 중간고사 점수의 평균을 구해보자
 

A = [70,60,55,75,95,90,80,80,85,100]
total = 0
for score in A:
    total += score
average = total/len(A)
print(average)

-> 한줄로 sum(A)/len(A)로 쓸수 있다.

79.0
 -> score도 리스트 인줄알고 len(score)를 했었는데 score는 반복문에서 리스트 A의 인덱스별로 값을 하나씩 받아서
정수 형태이다.       반복문에서 처음에 score값:70 두번째 60 ......등등
 

 

 
 
반응형

'빅데이터 서비스 교육 > Python' 카테고리의 다른 글

Python 함수  (0) 2022.05.03
Python 딕셔너리  (0) 2022.05.03
Python 튜플  (0) 2022.04.29
Python 리스트  (0) 2022.04.29
Python 조건문  (0) 2022.04.29