EGGRAN

[ 파이썬 공부 기록 7 ] 파이썬 독학 / 파이썬 반복문에 대하여 알아보기 for, while 본문

공부기록/Python

[ 파이썬 공부 기록 7 ] 파이썬 독학 / 파이썬 반복문에 대하여 알아보기 for, while

에그란 2022. 1. 2. 11:41
반응형

 

 1. for 반복문 

- 동일한 명령어 반복 처리하고싶을 때사용

- in 뒤에 있는 리스트 원소 숫자만큼 반복

for num in [0,1,2,3,4]: #원소 0,1,2,3,4 가 num에 하나씩 할당됨
    print("대기번호 : {0}".format(num))

<결과>
대기번호 : 0
대기번호 : 1
대기번호 : 2
대기번호 : 3
대기번호 : 4

for num in range(5): #범위가 0~5미만
    print("대기번호 : {0}".format(num))

<결과>
대기번호 : 0
대기번호 : 1
대기번호 : 2
대기번호 : 3
대기번호 : 4

for num in range(1,5): #범위가 1~5미만
    print("대기번호 : {0}".format(num))

<결과>
대기번호 : 1
대기번호 : 2
대기번호 : 3
대기번호 : 4
ㅇㅇ
cafe = ["장원영","안유진","리즈","이서","가을","레이"]
for customer in cafe:
    print("{0}님의 커피 나왔습니다.".format(customer))

<결과>
장원영님의 커피 나왔습니다.
안유진님의 커피 나왔습니다.
리즈님의 커피 나왔습니다.
이서님의 커피 나왔습니다.
가을님의 커피 나왔습니다.
레이님의 커피 나왔습니다.
aspa = ["카리나","윈터","닝닝","지젤"]
for member in aspa :
    print("{0}는(은) 에스파의 멤버입니다".format(member))

<결과>
카리나는(은) 에스파의 멤버입니다
윈터는(은) 에스파의 멤버입니다
닝닝는(은) 에스파의 멤버입니다
지젤는(은) 에스파의 멤버입니다
#리스트 안에 있는 원소에 100을 더하기
student =[1,2,3,4,5]
student =[ i+100 for i in student ]
print(student)

<결과>
[101, 102, 103, 104, 105]

#리스트 안에 원소 갯수 세기
list = ["가나다라","ABCDEFG","안녕하슈"]
list = [len(i) for i in list]
print(list)

<결과>
[4, 7, 4]


#리스트 안에 있는 소문자원소 대문자로 바꾸기
blackpink = ["jeny","rose","lisa","jisu"]
blackpink = [i.upper() for i in blackpink]
print (blackpink)

<결과>
['JENY', 'ROSE', 'LISA', 'JISU']

 2. while 반복문 

- for반목문은 반복할 원소갯수만큼 한정되지만

- while 반복문은 조건식이 참인경우 무한반복 , 거짓이 되면 반복문 종료

# #알람이 5번 울린다. 5번이 지나면 물벼락을 맞는다.
index = 1
while index <=5 : #index 값이 5이하일 때까지만 반복
    print("알람이 {0}번 울렸습니다".format(index))
    index+=1 #index값 1씩 증가
    if index==6:
        print("알람이 {0}번 울렸습니다. 물벼락이 떨어집니다!".format(index))

<결과>
알람이 1번 울렸습니다
알람이 2번 울렸습니다
알람이 3번 울렸습니다
알람이 4번 울렸습니다
알람이 5번 울렸습니다
알람이 6번 울렸습니다. 물벼락이 떨어집니다!
# 안보현의 커피가 나와서 손님을 불렀다. 안보현이 맞으면 커피를 드리고
# 안보현이 아니면 안보현을 다시 부른다

customer = "안보현"
person = "Unknown"

while person != customer:
    print("{0}님 주문하신 커피 나왔습니다!".format(customer))
    person = input("이름이 어떻게 되세요?")
    if person == customer :
        print("{0}님 커피 맛있게드세요~".format(person))
    else:
        print("이건 안보현님 커피입니다! {0}님은 잠시 기다려주세요~\n".format(person))

<결과>
안보현님 주문하신 커피 나왔습니다!
이름이 어떻게 되세요?정해인  #정해인은 내가 입력한 값
이건 안보현님 커피입니다! 정해인님은 잠시 기다려주세요~ #안보현이 아니여서 다시반복

안보현님 주문하신 커피 나왔습니다!
이름이 어떻게 되세요?이준호 #이준호는 내가 입력한 값 
이건 안보현님 커피입니다! 이준호님은 잠시 기다려주세요~ #안보현이 아니여서 다시반복

안보현님 주문하신 커피 나왔습니다!
이름이 어떻게 되세요?안보현 #안보현은 내가 입력한 값
안보현님 커피 맛있게드세요~ #값 일치로 반복문 종료

 

 

 

 3. continu 

- continu는 건너뛰고 다음 코드실행

# 1학년 1반에는 10명의 학생이 있는데 그 중 3, 5번 학생이 오늘 결석을 하였다.
# 3번 5번 학생을 빼고 출석을 불러야하는 상황

absent = [3,5] #결석한 학생
for student in range(1,11): #학생으 1~10번까지 있고 student에 원소를 할당, 그 갯수만큼 반복문 실행
    if student in absent: #조건이 student 원소가 absent에 포함되면 continue 한다.
        continue
    print("{0}번 출석완료".format(student)) 

<결과>
1번 출석완료
2번 출석완료
4번 출석완료
6번 출석완료
7번 출석완료
8번 출석완료
9번 출석완료
10번 출석완료

 

 4. break 

- 반복문을 종료시키는 명령

# 1~10까지의 숫자가 있는데 num 변수 값이 5가되면 프로그램 종료
num = 0
for num in range(1,11):
    print(num)
    if num == 5:
        break
    num+=1

<결과>
1
2
3
4
5

#무한루프에서 num이 10이되면 종료
num = 0 
while True:
    print(num)
    if num == 10:
     break
    num+=1

<결과>
0
1
2
3
4
5
6
7
8
9
10

 

 5. 응용문제 

#Quiz) 당신은 cocoa 서비스를 이용하는 택시기사입니다.
#50명의 승객과 매칭기회가 있을 때, 총 탑승 승객 수를 구하는 프로그램을 작성하시오.
#조건1: 승객별 운행소요시간은 5~50분 사이의 난수로 정해짐
#조건2: 당신은 소요시간 5분~15분 사이의 승객만 매칭해야합니다

#출력문 예제
# [o] 1번째 손님 (소요시간 : 50분)
# [ ] 2번쨰 손님 (소요시간 : 14분)
# [o] 3번쨰 손님 (소요시간 : 11분)
# ...
# [ ] 50번쨰 손님(소요시간 : 20분)

# 총 탑승 승객 : 2분


#for
from random import *
count =0
for customer in range(1,51):
   time = randrange(5,50)
   if 5<=time<=15:
        print("[O] {0}번째 손님 (소요시간 : {1})".format(customer,time))
        count+=1
   else :
        print("[ ] {0}번째 손님 (소요시간 : {1})".format(customer,time))
        
print("총 탑승 승객 : {0}분".format(count))


#while
from random import*
count=0
customer=0
while 50>=customer :
    time=randint(5,50)
    customer+=1
    if 5 <= time <=15 :
        print("[O] {0}번쨰 손님 (소요 시간 : {1}".format(customer,time))
        count+=1
    else :
        print ("[ ] {0}번쨰 손님 (소요 시간 : {1}".format(customer,time))
print(count)
 
반응형