본문 바로가기
프로그래밍/파이썬기초

while 반복문_파이썬 기초

by 조크리 2021. 3. 17.
반응형

 

 

 

 

파이썬 찐초보 5번째 글!

 

오늘의 목표는

 

1. while 반복문

2. 난수

3. 반복문 복습

 

이렇게 3가지이다~

 

 

 

 

먼저 지난번에 for반복문에 대해 살펴보았는데 

 

이번에는 while반복문에 대해 자세히 살펴보려한다. 

 

1. while 반복문

 

while반복문이란 특정 조건을 만족하면 같은 일을 계속 수행하는 반복문을 말한다.

 

for반복문이 주어진 범위 안에서 반복하는 반복문이라면

while은 for반복문과 하는 일은 같으나 표현을 다르게 한 것이라고 이해하면 된다. 

 

물론 for문을 썼을 때 효과적인 코드와 while을 썼을 때 효과적인 코드가 있지만

 

일단 이 둘은 서로 같은 역할을 한다는 것! 을 이해하면 된다. 

 

지난번 1부터 1000까지의 숫자의 합을 구하는 for반복문을 보면

 

for문 안에서 i라는 변수를 써주고 이 i라는 변수가 1부터 1000까지의 범위 안에 있다면

sum변수에 계속 i를 더하는 것을 반복하였다. 

 

이번에는 while문을 보자.

while문은 i라는 변수를 먼저 선언해주고 반복문을 시작한다.

 

i의 값이 10001보다 작을 때까지 sum변수에 i를 더하고 

sum변수에 i를 더한 다음에는 i값을 1씩 늘려준다. 

위의 두 코드를 놓고 비교해보면 for문이 더 간단하긴 하다.

어차피 i라는 변수와 sum이라는 두 개의 변수가 필요한 상황에서 for문은 i를 for문 안에 넣어버렸고 while문은 i를 정의해준다음에 while문을 사용해서 코드가 더 길어졌다. 

 

 

 

2. random 난수 사용해보기 

 

이제 1부터 1000, 5부터 40까지의 합을 구하는 형식은

for문과 while문 중 한 가지를 사용하면 된다는 것을 알게되었으니

 

이번에는

 

랜덤 숫자를 가져오는 random객체를 사용하는 방법을 알아보자!

 

random 객체를 활용해볼텐데

이 random객체는 이미 파이썬에 존재하는(다른 사용자들이 이미 만들어 놓은) 객체로

우리는 이걸 import, 즉 우리의 파이썬 환경으로 가져와서 쓰기만 하면 된다. 

 

 

이번 과제는 1부터 1000 사이에 있는 숫자 중에서 랜덤하게 10개의 숫자를 선택해 출력하는 과제이다.

 

파이썬 코드는 아래와 같고, 결과는 아래의 그림과 같다. 

 

import random
for i in range(10):
	print(random.randint(1, 1000))

 

 

이 random객체는 randint라는 메소드(함수)를 가지는데 이 함수에 시작 값과 끝 값을 적어주면 된다. 

 

그럼 이 random.randint를 활용해 1부터 1000사이의 임의 수 10개를 선택하여 그 합을 계산한다면?

 

아래의 코드처럼 써주면 계산이 쉽게 된다~

import random
sum = 0
for i in range(10):
	sum = sum + random.randint(1, 1000)
print(sum)

 

 

 

아마 이 코드를 다시 돌리면 또 다른 합의 값이 나올 것이다. 

왜냐면??? 랜덤으로 숫자가 다시 뽑히니까~

 

 

 

3. 규칙 만들기 

 

이처럼 반복문 for나 while을 활용하면 규칙성을 가진 단위를 쉽게 만들 수 있다.

 

1) 1부터 1씩 늘어나는 수 쓰기 

 

range의 범위가 11로 적혀 있기 때문에

i는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10까지 늘어날 것이며

i가 0일 때 num 출력, i가 2일때 num출력...이렇게 쭉 가면서 num은 i의 개수만큼(즉 11개)만큼 출력된다. 

 

2) 2, 4, 16, 256처럼 앞의 수의 제곱 값을 늘어놓기 

 

1)에서 본 것 처럼 range(11)이기에 최종 num의 개수는 11개가 나올 것이며 앞의 수를 제곱한 값들이 나올 것이다.

 

제곱을 좀 더 쉽게 나타내기 위해서 math 객체를 import 해주었고

그 중에 pow라는 메소드를 썼다. 

 

 

 

 

오늘의 목표 달성 완료~!!!

 

마지막으로 과제를 한 번 풀어보자!

 

임의의 숫자 100개의 데이터의 합을 계산하여 출력하는 프로그램을 만들어보자!!

 

 

 

예시 코드는~~ 아래에서 확인해보쟈!

 

import random
sum = 0 
for i in range(100):
	sum = sum + random.randint(1, 1000)
print(sum)

 

 

오늘의 파이썬 찐초보 정리도 끝~!!

 

++추가++

while문을 활용해서 다이소 결제 시스템 만들어보기!!

 

#무한반복 while문 활용
menu = """
1. 지우개 = 1000
2. 가위 = 2000
3. 연필 = 1500
4. 펜 = 1200
5. 종료 \n"""
print(menu)
#메뉴를 출력해주고 시작! 
total = 0
#while무한반복인데 5를 누르면 break로 끝난다!
while True:
  num = int(input("원하시는 메뉴번호를 입력하세요 : "))
  if num == 1:
    print("지우개를 주문하셨습니다.")
    total += 1000
  elif num == 2:
    print("가위를 주문하셨습니다.")
    total += 2000
  elif num == 3:
    print("연필을 주문하셨습니다.")
    total += 1500
  elif num == 4:
    print("펜을 주문하셨습니다.")
    total += 1200
  elif num == 5:
    print("총 주문하신 금액은 %d원 입니다." %(total))
    print("감사합니다. 다음에 또 오세요.")
    break
  else:
    print("잘못된 메뉴번호입니다. 다시 입력하세요.")

 

그동안은 프로그래밍에서 가장 기본이 되는 순차, 반복에 대해 정리해보았다~ 

 

다음글에서는 조건문과, 조건문 속 반복문에 대해 정리해보려한다^^

 

 

반응형