웹사이트 검색

Python 3에서 While 루프를 구성하는 방법


소개

컴퓨터 프로그램은 우리가 할 필요가 없도록 작업을 자동화하고 반복하는 데 사용하기에 좋습니다. 유사한 작업을 반복하는 한 가지 방법은 루프를 사용하는 것입니다. 이 튜토리얼에서는 Python의 while 루프를 다룰 것입니다.

while 루프는 주어진 부울 조건을 기반으로 코드의 반복 실행을 구현합니다. while 블록에 있는 코드는 while 문이 True로 평가되는 한 실행됩니다.

while 루프는 반복되는 조건문으로 생각할 수 있습니다. if 문 다음에 프로그램은 코드를 계속 실행하지만 while 루프에서는 조건이 False가 될 때까지 프로그램이 while 문의 시작 부분으로 다시 이동합니다.

특정 횟수만큼 실행되는 for 루프와 달리 while 루프는 조건부 기반이므로 코드를 몇 번 반복해야 하는지 알 필요가 없습니다.

전제 조건

컴퓨터나 서버에 Python 3이 설치되어 있고 프로그래밍 환경이 설정되어 있어야 합니다. 프로그래밍 환경이 설정되지 않은 경우 운영 체제(Ubuntu, CentOS, Debian 등)에 적합한 서버의 프로그래밍 환경에 대한 설치 및 설정 가이드를 참조할 수 있습니다.

동안 루프

Python에서 while 루프는 다음과 같이 구성됩니다.

while [a condition is True]:
    [do something]

수행 중인 작업은 평가 중인 조건이 더 이상 참이 아닐 때까지 계속 실행됩니다.

while 루프를 실행하는 작은 프로그램을 만들어 봅시다. 이 프로그램에서는 사용자에게 암호를 입력하도록 요청합니다. 이 루프를 진행하는 동안 두 가지 가능한 결과가 있습니다.

  • 암호 정확하면 while 루프가 종료됩니다.
  • 암호가 올바르지 않으면 while 루프가 계속 실행됩니다.

정보: 이 자습서의 예제 코드를 따라하려면 python3 명령을 실행하여 로컬 시스템에서 Python 대화형 셸을 엽니다. 그런 다음 >>> 프롬프트 뒤에 추가하여 예제를 복사, 붙여넣기 또는 편집할 수 있습니다.

선택한 텍스트 편집기에서 password.py라는 파일을 만들고 password 변수를 빈 문자열로 초기화합니다.

password = ''

빈 문자열은 while 루프 내에서 사용자로부터 입력을 받는 데 사용됩니다.

이제 조건과 함께 while 문을 구성합니다.

password = ''

while password != 'password':

여기에서 while 뒤에 변수 password가 옵니다. 변수 password가 문자열 password(나중에 사용자 입력에 따라)로 설정되어 있는지 확인하고 있지만 원하는 문자열을 선택할 수 있습니다.

즉, 사용자가 문자열 암호를 입력하면 루프가 중지되고 프로그램이 루프 외부의 모든 코드를 계속 실행합니다. 그러나 사용자가 입력한 문자열이 password 문자열과 같지 않으면 루프가 계속됩니다.

다음으로 while 루프 내에서 작업을 수행하는 코드 블록을 추가합니다.

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

while 루프 내에서 프로그램은 암호를 묻는 인쇄 문을 실행합니다. 그런 다음 변수 passwordinput() 함수를 사용하여 사용자의 입력으로 설정됩니다.

프로그램은 변수 password가 문자열 password에 할당되었는지 확인하고 할당된 경우 while 루프가 종료됩니다. 그런 일이 발생했을 때를 대비해 프로그램에 또 다른 코드 줄을 주자:

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

print('Yes, the password is ' + password + '. You may enter.')

마지막 print() 문은 while 루프 외부에 있으므로 사용자가 암호로 password를 입력하면 최종 인쇄가 표시됩니다. 루프 외부의 문.

그러나 사용자가 password라는 단어를 입력하지 않으면 마지막 print() 문에 도달하지 못하고 무한 루프에 빠지게 됩니다.

무한 루프는 프로그램이 한 루프 내에서 계속 실행되고 절대 벗어나지 않을 때 발생합니다. 명령줄에서 무한 루프를 종료하려면 CTRL + C를 누르십시오.

프로그램을 저장하고 실행하십시오:

  1. python password.py

암호를 입력하라는 메시지가 표시되면 가능한 다양한 입력으로 암호를 테스트할 수 있습니다. 다음은 프로그램의 샘플 출력입니다.

Output
What is the password? hello What is the password? sammy What is the password? PASSWORD What is the password? password Yes, the password is password. You may enter.

확인하기 전에 문자열 함수를 사용하여 문자열을 모두 소문자로 변환(예:)하지 않는 한 문자열은 대소문자를 구분합니다.

While 루프가 있는 예제 프로그램

while 루프의 일반적인 전제를 이해했으므로 while 루프를 효과적으로 사용하는 명령줄 추측 게임을 만들어 보겠습니다. 이 프로그램이 어떻게 작동하는지 가장 잘 이해하려면 데이터 유형 변환에 대해서도 읽어야 합니다.

먼저 선택한 텍스트 편집기에서 guess.py라는 파일을 만듭니다. 우리는 컴퓨터가 사용자가 추측할 수 있는 임의의 숫자를 제시하기를 원하므로 Python 문서에서 임의의 숫자를 생성합니다.

import random

다음으로 변수 숫자에 임의의 정수를 할당하고 게임을 너무 어렵게 만들지 않기 위해 1에서 25(포함) 범위로 유지합니다.

import random

number = random.randint(1, 25)

이 시점에서 우리는 while 루프에 들어가서 먼저 변수를 초기화한 다음 루프를 생성할 수 있습니다.

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')

    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

변수 number_of_guesses를 0으로 초기화하여 루프가 반복될 때마다 값을 증가시켜 무한 루프가 발생하지 않도록 했습니다. 그런 다음 number_of_guesses가 총 5개로 제한되도록 while 문을 추가했습니다. 다섯 번째 추측 후 사용자는 명령줄로 돌아가며 지금은 사용자가 정수 이외의 것을 입력하면 오류가 발생합니다.

루프 내에서 print() 문을 추가하여 input() 함수를 사용하여 사용자에게 숫자를 입력하라는 메시지를 표시하고 >추측 변수. 그런 다음 guess를 문자열에서 정수로 변환했습니다.

루프가 끝나기 전에 루프를 5번 반복할 수 있도록 number_of_guesses 변수를 1씩 늘리고 싶습니다.

마지막으로 조건부 if 문을 작성하여 사용자가 만든 추측이 컴퓨터가 생성한 숫자와 동일한지 확인하고 if 그래서 break 문을 사용하여 루프에서 나옵니다.

이 프로그램은 완벽하게 작동하며 다음 명령으로 실행할 수 있습니다.

  1. python guess.py

그것이 작동하긴 하지만, 현재 사용자는 자신의 추측이 맞는지 절대 알 수 없으며 제대로 했는지도 모른 채 전체 5번을 추측할 수 있습니다. 현재 프로그램의 샘플 출력은 다음과 같습니다.

Output
Guess a number between 1 and 25: 11 Guess a number between 1 and 25: 19 Guess a number between 1 and 25: 22 Guess a number between 1 and 25: 3 Guess a number between 1 and 25: 8

사용자가 숫자를 올바르게 추측했는지 여부에 대한 피드백을 받을 수 있도록 루프 외부에 몇 가지 조건문을 추가해 보겠습니다. 이들은 현재 파일의 끝에 위치합니다.

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

이 시점에서 프로그램은 사용자가 숫자를 맞혔는지 틀렸는지 알려줄 것입니다. 이는 사용자가 추측할 수 없을 때 루프가 끝날 때까지 발생하지 않을 수 있습니다.

사용자에게 약간의 도움을 주기 위해 while 루프에 조건문을 몇 개 더 추가해 보겠습니다. 이는 사용자에게 숫자가 너무 낮거나 너무 높은지 알려 주어 올바른 숫자를 추측할 가능성을 높일 수 있습니다. if guess == number 줄 앞에 추가합니다.

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess < number:
        print('Your guess is too low')

    if guess > number:
        print('Your guess is too high')

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

python guess.py를 사용하여 프로그램을 다시 실행하면 사용자가 추측하는 데 더 많은 도움을 받는 것을 볼 수 있습니다. 따라서 임의로 생성된 숫자가 12이고 사용자가 18을 추측하면 추측이 너무 높다는 메시지가 표시되며 그에 따라 다음 추측을 조정할 수 있습니다.

사용자가 정수를 입력하지 않은 경우에 대한 오류 처리를 포함하여 코드를 개선하기 위해 수행할 수 있는 작업이 더 있지만 이 예에서는 짧은 명령줄 프로그램에서 작업 중인 while 루프를 볼 수 있습니다. .

결론

이 자습서에서는 while 루프가 Python에서 작동하는 방식과 이를 구성하는 방법에 대해 살펴보았습니다. While 루프는 while 문에 설정된 조건이 True인 경우 코드 블록을 계속 반복합니다.

여기에서 break, continue 및 pass 문에 대한 자습서를 읽어 루핑에 대해 계속 배울 수 있습니다.