Python의 조건부 if 문. 구문, else/elif 블록, 예

프로그래밍을 배우는 과정에서 실생활에 적용하기 쉽지 않은 프로그램을 만들어야 하는 경우가 종종 있습니다. 결국, 때때로 특정 조건에서만 지침을 따라야합니다. 이를 프로그램에서 구현할 수 있도록 모든 언어에는 제어문이 있습니다. 이들의 도움으로 특정 조건이 참일 때만 루프를 생성하거나 특정 작업을 수행하여 코드 실행 흐름을 제어할 수 있습니다.

오늘 우리는 특정 조건에 대한 현재 상황을 확인하고 이 정보를 기반으로 추가 조치에 대한 결정을 내리는 if 문에 대해 이야기할 것입니다.

제어문의 유형

일반적으로 if는 프로그램의 흐름을 제어하는 ​​유일한 명령문이 아닙니다. 그 자신뿐만 아니라 더 큰 운영자 체인의 구성 요소가 될 수 있습니다.

실행 프로세스를 제어하는 ​​루프와 명령문도 있습니다. 오늘 우리는 조건부 연산자와 그것이 참여할 수 있는 체인에 대해서만 이야기할 것입니다.

프로그래밍에는 분기와 같은 것이 있습니다. 이것은 특정 조건이 참인 경우에만 실행되는 일련의 명령을 의미합니다. 기준 자체가 다를 수 있습니다.

  1. 특정 값에 대한 변수의 동등성.
  2. 특정 작업을 수행합니다.
  3. 응용 프로그램 상태(접힌 여부).

스펙트럼은 훨씬 더 클 수 있습니다. 조건문에는 여러 유형이 있습니다.

  1. 하나의 지점으로. 즉, 단일 검사가 수행되어 특정 작업이 수행됩니다.
  2. 두 개 이상의 지점이 있습니다. 기준 1이 참이면 기준 2를 확인하고, 참이면 3을 확인합니다. 따라서 필요한 만큼 확인을 수행합니다.
  3. 여러 조건으로. 여기에서는 모든 것이 간단합니다. 통역사는 여러 조건 또는 그 중 하나를 확인합니다.

if 문

if 문의 구조는 모든 언어에서 유사합니다. 그러나 Python에서 구문은 다른 구문과 다소 다릅니다.

조건:

    <входящее выражение 1>

    <входящее выражение 2>

<не входящее выражение>

먼저 연산자 자체를 선언한 후 작동을 시작하는 조건을 작성합니다. 조건은 true 또는 false일 수 있습니다.

그 다음에는 명령이 있는 블록이 옵니다. 충족되어야 하는 기준 바로 다음에 오는 경우 해당 명령 시퀀스를 if 블록이라고 합니다. 그 안에 있는 명령을 얼마든지 사용할 수 있습니다.

주목! all if 블록 명령의 들여쓰기는 같은 크기여야 합니다. 블록 경계는 들여쓰기에 의해 결정됩니다. 

언어 문서에 따르면 들여쓰기는 4칸입니다. 

이 연산자는 어떻게 작동합니까? 인터프리터는 if 단어를 보면 즉시 사용자가 지정한 기준에 대해 표현식을 확인합니다. 이것이 사실이라면 그는 지시를 찾고 따르기 시작합니다. 그렇지 않으면 이 블록의 모든 명령을 건너뜁니다.

조건 뒤의 문이 들여쓰기되지 않으면 if 블록으로 처리되지 않습니다. 우리 상황에서 이 라인은 . 따라서 검사 결과에 관계없이 이 행이 실행됩니다.

다음은 이 연산자가 작동하는 방식의 예에 대한 코드 스니펫입니다.

number = int(input("숫자를 입력하세요: "))

숫자 > 10인 경우:

    print("10보다 큰 숫자입니다.")

이 프로그램은 사용자에게 숫자를 입력하라는 메시지를 표시하고 10보다 큰지 확인합니다. 그렇다면 적절한 정보를 반환합니다. 예를 들어 사용자가 숫자 5를 입력하면 프로그램이 종료됩니다.

그러나 숫자 100을 지정하면 통역사는 XNUMX 이상임을 이해하고보고합니다.

주목! 우리의 경우 조건이 거짓이면 명령 뒤에 명령이 주어지지 않기 때문에 프로그램이 중지됩니다.

위의 코드에는 하나의 명령만 있습니다. 그러나 그들 중 더 많은 것이 있습니다. 유일한 요구 사항은 들여 쓰기입니다.

이제 이 명령 시퀀스를 분석해 보겠습니다.

number = int(input("숫자 쓰기: "))

숫자 > 10인 경우:

    print("첫줄")

    print("두 번째 줄")

    print("세 번째 줄")

print("입력한 숫자와 상관없이 실행되는 줄")

print("신청종료")

2, 5, 10, 15, 50 값을 입력하면 어떤 결과가 나올지 추측해 보세요.

보시다시피, 사용자가 입력한 숫자가 3,4,5보다 크면 세 줄 + "Run every time ..."이라는 텍스트와 한 줄 "End"가 출력되고, XNUMX보다 작으면 한 줄만 출력됩니다. 다른 텍스트. true인 경우 XNUMX행만 실행됩니다. 그러나 사용자가 지정하는 번호에 관계없이 마지막 두 줄은 기록됩니다.

콘솔에서 직접 명령문을 사용하면 결과가 달라집니다. 확인 기준을 지정한 후 Enter 키를 누르면 통역사가 즉시 다중 회선 모드를 켭니다.

다음 명령 시퀀스를 작성했다고 가정합니다.

>>>

>>> n = 100

>>> n > 10인 경우:

...

그 후 >>>가 줄임표로 대체되었음을 알 수 있습니다. 이것은 여러 줄 입력 모드가 활성화되었음을 의미합니다. 간단히 말해서 Enter 키를 누르면 명령의 두 번째 단계의 입력으로 전환됩니다. 

그리고 이 블록을 종료하려면 블록에 하나의 구성을 더 추가해야 합니다. if.

>>>

>>> n = 100

>>> n > 10인 경우:

... 인쇄(«nv 10»)

...

조건이 참이 아니면 프로그램이 종료됩니다. 이는 사용자가 이러한 프로그램이 오류로 인해 종료된 것으로 인식할 수 있기 때문에 문제입니다. 따라서 사용자에게 피드백을 제공해야 합니다. 이를 위해 링크가 사용됩니다. 다른 경우라면.

표현식 연산자 다른 경우라면

이 연산자를 사용하면 링크를 구현할 수 있습니다. 표현식이 특정 규칙과 일치하면 다음 작업을 수행하고 그렇지 않으면 다른 작업을 수행합니다. 즉, 프로그램의 흐름을 두 갈래로 나눌 수 있습니다. 구문은 직관적입니다.

조건:

    # 차단하면

    진술 1

    진술 2

    등

그밖에:

    # else 블록

    진술 3

    진술 4

    등등:

이 연산자가 어떻게 작동하는지 설명하겠습니다. 먼저 스레드에서 표준 명령문이 실행됩니다. 이봐, 일치하는지 확인 조건 "참" 또는 "거짓". 추가 조치는 확인 결과에 따라 다릅니다. true인 경우 조건 다음의 명령어 시퀀스에 있는 명령어가 직접 실행됩니다. 이봐, 그것이 거짓이라면, 그렇지 않으면

이런 식으로 오류를 처리할 수 있습니다. 예를 들어 사용자는 반경을 입력해야 합니다. 분명히 더하기 기호가 있는 숫자이거나 null 값일 수 있습니다. 0보다 작으면 양수를 입력하라는 메시지를 발행해야 합니다. 

다음은 이 작업을 구현하는 코드입니다. 그러나 여기에 한 가지 실수가 있습니다. 어느 쪽인지 추측해 보세요. 

반경 = int(input("반경을 입력하세요: "))

반경 >= 0인 경우:

    print("원주 = ", 2 * 3.14 * 반지름)

    print("영역 = ", 3.14 * 반지름 ** 2)

    그밖에:

        print("양수를 입력하세요.")

들여쓰기 불일치 오류입니다. 만약 그리고 그렇지 않으면 그것들이 없거나 같은 수로 위치해야 합니다(중첩 여부에 따라 다름).

또 다른 사용 사례(운영자 정렬로 모든 것이 정확함)를 보겠습니다. 암호를 확인하는 응용 프로그램 요소입니다.

password = input("비밀번호를 입력하세요: ")

비밀번호 == «sshh»인 경우:

    print("환영합니다")

그밖에:

    print("접근이 거부되었습니다.")

이 명령은 암호가 sshh이면 사람을 더 건너뜁니다. 문자와 숫자의 다른 조합이 있는 경우 "액세스가 거부되었습니다"라는 메시지가 표시됩니다.

문 표현식 if-elif-else

여러 조건이 참이 아닌 경우에만 블록에 있는 명령문이 실행됩니다. 그렇지 않으면. 이 표현은 이렇게 작동합니다.

조건_1인 경우:

    # 차단하면

    성명서

    성명서

    더 많은 진술

엘리프 조건_2:

    # 첫 번째 elif 블록

    성명서

    성명서

    더 많은 진술

엘리프 조건_3:

    # 두 번째 elif 블록

    성명서

    성명서

    더 많은 진술

...

그렇지 않으면

    성명서

    성명서

    더 많은 진술

추가 조건을 원하는 수만큼 지정할 수 있습니다..

중첩 문

여러 조건을 구현하는 또 다른 방법은 if ​​블록에 추가 조건 검사를 삽입하는 것입니다.

운영자 if 다른 조건 블록 내부

gre_score = int(input("현재 신용 한도를 입력하세요"))

per_grad = int(input("신용등급을 입력하세요: "))

per_grad > 70인 경우:

    # 외부 if 블록

        gre_score > 150인 경우:

            # 내부 if 블록

    print("축하합니다, 대출을 받으셨습니다.")

그밖에:

    print("죄송합니다. 대출 대상이 아닙니다.")

이 프로그램은 신용 등급 확인을 수행합니다. 70 미만인 경우 프로그램은 사용자가 크레딧을 받을 자격이 없다고 보고합니다. 이보다 크면 현재 신용 한도가 150보다 큰지 확인하기 위해 두 번째 확인이 수행됩니다. 그렇다면 대출이 발행되었다는 메시지가 표시됩니다.

두 값이 모두 거짓이면 사용자가 대출을 받을 가능성이 없다는 메시지가 표시됩니다. 

이제 해당 프로그램을 약간 수정해 보겠습니다.

gre_score = int(input("현재 제한을 입력하세요: "))

per_grad = int(input("신용등급을 입력하세요: "))

per_grad > 70인 경우:

    gre_score > 150인 경우:

        print("축하합니다, 대출을 받으셨습니다.")

    그밖에:

        print("당신의 신용 한도가 낮습니다.")

그밖에:

    print("죄송합니다. 크레딧을 받을 자격이 없습니다.")

코드 자체는 매우 유사하지만 중첩 if 또한 조건이 거짓으로 판명되는 경우 알고리즘을 제공합니다. 즉, 카드 한도가 부족하지만 신용 기록이 양호한 경우 "신용등급이 낮습니다."라는 메시지가 표시됩니다.

조건 내의 if-else 문 그렇지 않으면

시험 점수에 따라 학생의 성적을 결정하는 또 다른 프로그램을 만들어 봅시다.

점수 = int(input("점수를 입력하세요: "))

점수 >= 90인 경우:

    print("좋습니다! 당신의 성적은 A입니다.")

그밖에:

    점수 >= 80인 경우:

print("좋습니다! 당신의 성적은 B입니다.")

    그밖에:

점수 >= 70인 경우:

    print("좋습니다! 당신의 성적은 C입니다.")

그밖에:

    점수 >= 60인 경우:

print("당신의 성적은 D입니다. 자료를 반복할 가치가 있습니다.")

    그밖에:

print("당신은 시험에 떨어졌습니다.")

애플리케이션은 먼저 점수가 90보다 크거나 같은지 확인합니다. 그렇다면 A 등급을 반환합니다. 이 조건이 거짓이면 후속 검사가 수행됩니다. 얼핏 보면 알고리즘이 거의 동일하다는 것을 알 수 있습니다. 그래서 내부를 확인하는 것보다 그렇지 않으면 조합을 사용하는 것이 좋습니다 if-elif-else.

그래서 운영자 if 매우 중요한 기능을 수행합니다. 특정 코드가 필요할 때만 실행되도록 합니다. 가장 단순한 알고리즘이라도 "왼쪽으로 가면 찾을 수 있고 오른쪽으로 가면 이것 저것을 해야 한다"와 같은 포크가 필요하기 때문에 이것이 없는 프로그래밍은 상상할 수 없습니다.

댓글을 남겨주세요.