파이썬 입력 반복 - paisseon iblyeog banbog

저보다 설명을 잘해둔 (링크)while문에 대해서 알아보자 이 링크를 참조해주세요 :)

그리고 저도 설명을 해봤지만 정말 너무 못해서 “헬로 파이썬 프로그래밍”책을 참조하도록 하겠습니다!

조건을 만족하는 동안

지금까지 반복문의 첫번째 종류인 for문에 대해서 배웠다. 이번에는 조건반복 이라고 하는 while 에 대해서 배워보도록 하자.

for문은 반복문을 몇번 실행할지 미리 아는 경우에 사용하기 좋다. 그런데 때로는 어떤 상황이 일어나기 전까지는 반복문을 계속 실행하고 싶고, 그럴 상황이 일어날 때까지 몇번 반복해야 할지 모를때가 있다. 이러한 경우에 while문을 이용하면 이러한 문제를 해결할 수 있다.

while문은 실행될때마다 “이제 끝났나??.. 이제 끝났나??”를 계속 뒤풀이 한다. 우리가 에전에 배웠던 if문을 이용해 매번 반복할 때마다 내가 더 반복해야 하는가? 를 결정하게 되는것이다. 예를 들어서 숙제와 같은 경우에 숙제를 다 할 때까지 계속 숙제하기() 라는 작업을 계속해야 한다.

while 숙제안함:
  숙제하기()

print("숙제 다함!!")

숙제안함 이라는 조건이 만족하는 동안(True 값인 경우)에는 계속 숙제하기() 라는 작업을 반복을 한다는 소리다.

아래 코드는 while문의 기본적인 구조이다. while문 안에잇는 조건이 True라면, 무한정 조건이 False가 될 때까지 계속 반복한다. (조금 헷갈릴 것 같다)

간단하게 아래와 같은 패턴을 생각하면 될것이다.

아래의 코드의 결과를 보면 “Hello!!!!”가 무한정으로 출력이 될 것이다. 왜냐하면, 조건이 언제나 True로 참이기 때문에 반복은 멈추지 않는다.

while True:
  print("Hello!!!!")

예를 들어서 3이 입력될 때 까지 계속 입력받기 라는 코드를 작성한다고 생각해보자. 입력받는 값에 3이 들어갈 때까지 계속 반복해서 수를 입력받아야 한다. 이럴때 while문을 사용한다.

data = 0
while data!=3:
  data = input("3을 입력해 주세요! :")

print("3이 입력되었습니다.!") #data가 3이 되면 while이 끝나고 이 문장이 출력된다.

아래 코드는 count가 5보다 작을 동안 계속 1씩 더해주는 코드이다. 그리고 count가 5가 된다면 멈추게 된다.

count = 0

while count<5:
  count +=1
  print("Count :"+str(count))

print("Finished!")

#결과#
# Count : 1
# Count : 2
# Count : 3
# Count : 4
# Count : 5
# Finished!!

while 이란?

while문은 반복문(loop-control statements)의 한 종류입니다. 프로그램 내의 특정한 부분을 지정한 조건이 만족할 때까지 반복 수행하도록 하는 제어 구조입니다. , 제어문 안에 반복문이 존재합니다.

1. while문 기본 구조

while 조건문:

조건에 만족하는 문장1

조건에 만족하는 문장2

조건에 만족하는 문장3

조건에 만족하는 문장4

......

while문은 조건문이 참인 동안에 while문 안에 속하는 문장들을 거짓이 될 때 까지 반복해서 수행합니다.

“1부터 10까지 숫자를 출력 하세요

>>> i = 0

>>> while i<10:

i = i+1

print("i = %d 입니다." %i)

i = 1 입니다.

i = 2 입니다.

i = 3 입니다.

i = 4 입니다.

i = 5 입니다.

i = 6 입니다.

i = 7 입니다.

i = 8 입니다.

i = 9 입니다.

i = 10 입니다.

2. 반복문에서 자주 사용하는 함수(input())

input() 함수는 사용자가 입력할 수 있게 만들어 주는 함수입니다. int(input())로 표현하면 사용자의 숫자의 입력을 받아들이는 것입니다. str(input())로 표현하면 사용자의 문자 혹은 문자열의 입력을 받아들이는 것입니다. input()함수에서 소괄호 안에는 문자열을 넣을 수 있습니다.

예를 들면 input(“입력: ”) 이런식으로 사용할 수 있습니다.  물론 ()안에 아무것도 안써도 상관 없습니다.

2.1 input() 함수 사용하기

>>> number = 0

>>> print(number)

0

>>> number = int(input("숫자 입력: "))

숫자 입력: 7

>>> print(number)

7

>>> number == 7

True

여기서 궁금증이 하나 생길 수 있습니다.

굳이 intinput()함수를 감쌀 필요가 있을까?

>>> number = 0

>>> print(number)

0

>>> number = input("숫자 입력: ")

숫자 입력: 7

>>> print(number)

7

>>> number == 7

False

결과가 False가 나왔습니다.

이유는 number가 정수가 아닌 문자 형태로 저장되었기 때문입니다. , input() 함수는 기본 자료형이 문자라는 것을 알 수 있습니다.

>>> str = ""

>>> print(str)

                     # 공백입니다.

>>> str = input("입력 :")

입력 :Hello World

>>> str == "Hello World"

True 

str로 묶어도 되고 안 묶어도 무리 없이 사용 할 수 있습니다.

2.2 덧셈 뺄셈 계산기 만들어 보기(반복문과 input() 함수를 사용)

“1번은 덧셈 2번은 뺄셈 3번은 종료”(이 부분은 번호 입력만 확인하고 뒤로 가서 코드를 확장 시키겠습니다.)

>>> str1 = """

1. Add

2. Sub

3. Quit

"""

>>> while number != 3:

            print(str1)

            number = int(input("번호 입력: "))

1. Add

2. Sub

3. Quit

번호 입력: 1

1. Add

2. Sub

3. Quit

번호 입력: 2

1. Add

2. Sub

3. Quit

번호 입력: 3 

3. brek

break문은 반복문을 빠져나올 때 씁니다. 2.2에서 봤던 !=3이라는 조건을 사용할 수 있다면 상관없지만 저렇게 되면 중복되게 반복문을 빠져나오는 구문을 만 들 수 가없습니다. 그래서 break문을 사용해서 반복문을 빠져나오게 할 수 있습니다.

3.1 break문 사용하기

>>> str1 = """

1. Add

2. Sub

3. Quit

"""

>>> while True:

            print(str1)

            number = int(input("번호 입력: "))

            if number == 1:

                    pass

            elif number == 2:

                    pass

            elif number == 3:

                    print("종료")

                    break

            else:

                    print("잘못 입력하셨습니다.")

1. Add

2. Sub

3. Quit

번호 입력: 4

잘못 입력하셨습니다.

1. Add

2. Sub

3. Quit

번호 입력: 1

1. Add

2. Sub

3. Quit

번호 입력: 2

1. Add

2. Sub

3. Quit

번호 입력: 3

종료

2.2 예제에서는 while문에서 number !=3을 사용했습니다. 하지만 break문을 사용해서 종료시키게 만들었습니다.

3.2 덧셈 뺄셈 계산기 만들어 보기

“1번은 덧셈 2번은 뺄셈 3번은 종료

>>> str1 = """

1. Add

2. Sub

3. Quit

"""

>>> while True:

            print(str1)

            number = int(input("번호 입력: "))

            if number == 1:

                    print("덧셈")

                    num1 = int(input("첫번째 숫자 입력: "))

                    num2 = int(input("두번째 숫자 입력: "))

                    result = num1 + num2

                    print("%d + %d = %d" %(num1, num2, result))

            elif number == 2:

                    print("뺄셈")

                    num1 = int(input("첫번째 숫자 입력: "))

                    num2 = int(input("두번째 숫자 입력: "))

       result = num1 - num2

       print("%d - %d = %d" %(num1, num2, result))

elif number == 3:

        print("종료")

        break

else:

        print("잘못 입력하셨습니다.")

1. Add

2. Sub

3. Quit

번호 입력: 1

덧셈

첫번째 숫자 입력: 10

두번째 숫자 입력: 20

10 + 20 = 30

1. Add

2. Sub

3. Quit

번호 입력: 2

뺄셈

첫번째 숫자 입력: 10

두번째 숫자 입력: 20

10 - 20 = -10

1. Add

2. Sub

3. Quit

번호 입력: 4

잘못 입력하셨습니다.

1. Add

2. Sub

3. Quit

번호 입력: 3

종료

4. 무한 루프

무한 루프란 보는 바와 같이 무한적으로 반복한다는 의미입니다. 3.2 예제에서 살펴보면 (while True:)while문의 조건문이 True이므로 항상 참이 됩니다. , while 문 안에 있는 문장들은 계속적(무한)으로 수행하게 됩니다.

무한 루프를 빠져나올 때는 Ctrl + c를 누르면 됩니다.

>>> while True:

print("Ctrl + c를 누르면 무한루프가 종료 됩니다.")

Ctrl + c를 누르면 무한루프가 종료 됩니다.

Ctrl + c를 누르면 무한루프가 종료 됩니다.

Ctrl + c를 누르면 무한루프가 종료 됩니다.

Ctrl + c를 누르면 무한루프가 종료 됩니다.

Traceback (most recent call last):

File "<pyshell#157>", line 2, in <module>

print("Ctrl + c를 누르면 무한루프가 종료 됩니다.")

KeyboardInterrupt

if, while, for 연습문제 풀러 가기