Przejdź do tematu:
Instrukcja warunkowa (if) w Pythonie
Przejdź do ćwiczenia:
Programowanie w Pythonie
Włącz widok pełnoekranowy

Korzystasz z platformy z limitem dziennym na liczbę odpowiedzi. Aby zwiększyć limit lub uzyskać dostęp do konta z licencją, zaloguj się.

Zaloguj się
Udostępnij Pokaż wyjaśnienie do tematu
Instrukcja warunkowa (if) w Pythonie

Warunkowe wykonanie polecenia zapisujemy za pomocą if. Warunek może być dowolnym wyrażeniem logicznym. W ramach warunku możemy wykonać również więcej niż jedno polecenie. Blok poleceń oznaczamy wcięciem:

if answer != 42:           # polecenia zostaną wykonane tylko, jeśli warunek jest spełniony:

    print("Bad answer")    # wyświetlamy komunikat

    answer = 42            # dodatkowo zmieniamy zmienną

Gałąź else

Możemy również określić, co ma się stać, gdy warunek nie jest spełniony. W tym celu używamy polecenia else, po którym następuje wcięty blok poleceń:

if x < 10:

    print("small")    # wykona się, jeśli warunek jest prawdziwy

else:

    print("big")      # wykona się, jeśli warunek jest fałszywy

Poszczególne warianty obliczeń nazywamy gałęziami, a całą instrukcję warunkową możemy również określać jako rozgałęzienie.

Wielokrotne rozgałęzienie

Jeśli chcemy sprawdzić kilka możliwości, możemy użyć konstrukcji if / elif / else. W niektórych językach programowania do wielokrotnego rozgałęzienia używa się polecenia switch, ale w Pythonie wystarczy elif. Na przykład:

if age < 6:

    print("przedszkolak")

elif age < 18:        # sprawdzane, jeśli poprzedni warunek nie był prawdziwy

    print("uczeń")

elif age < 65:        # sprawdzane, jeśli żaden poprzedni warunek nie jest był prawdziwy

    print("dorosły")

else:                 # wykona się, jeśli żaden poprzedni warunek nie jest prawdziwy

    print("emeryt")

Z if/elif wykona się maksymalnie jedna – pierwsza, dla której warunek jest prawdziwy. W naszym przykładzie, jeśli w zmiennej age znajduje się wartość 15, zostanie wyświetlone tylko „uczeń”. Warunek age < 65 również jest prawdziwy, ale Python już go nie sprawdza.

Rozgałęzienia zagnieżdżone

Czasem polecenia warunkowe mogą zawierać kolejne rozgałęzienia. Mówimy wówczas o zagnieżdżaniu. W przypadku kolejnych gałęzi musimy zwiększyć wcięcie. Możemy napisać na przykład:

if choice == "tea":

    if money >= 10:

        print("ok")

    else:

        print("refuse")

else:

    print("not available")



if n % 2 == 1:

    if x > 13:

        print("Win!")

W niektórych przypadkach zamiast zagnieżdżonego kodu łatwiej i przejrzyściej jest użyć prostego polecenia warunkowego z warunkiem wykorzystującym operatory logiczne. Na przykład ostatni przykład możemy uprościć w ten sposób:

if n % 2 == 1 and x > 13:

    print("Win!")

Fatal error: Uncaught TypeError: App\Service\PsService::getUserItemStatusByPs(): Argument #1 ($user) must be of type int, null given, called in /var/www/umiemyprogramowac.pl/webroot/src/Snippet/Exercise/ItemBasedExercise/ItemBasedExercisePlugin.php on line 66 and defined in /var/www/umiemyprogramowac.pl/webroot/src/Service/PsService.php:69 Stack trace: #0 /var/www/umiemyprogramowac.pl/webroot/src/Snippet/Exercise/ItemBasedExercise/ItemBasedExercisePlugin.php(66): App\Service\PsService->getUserItemStatusByPs() #1 [internal function]: App\Snippet\Exercise\ItemBasedExercise\ItemBasedExercisePlugin->progress() #2 /var/www/umiemyprogramowac.pl/webroot/src/Helper/ExerciseHeaderBuilder.php(20): call_user_func() #3 /var/www/umiemyprogramowac.pl/webroot/src/Template/BaseExercise/default.php(26): App\Helper\ExerciseHeaderBuilder->render() #4 /var/www/umiemyprogramowac.pl/webroot/src/Controller/BaseExercise.php(119): require('...') #5 /var/www/umiemyprogramowac.pl/webroot/exercise/ipython.php(21): App\Controller\BaseExercise->renderDefault() #6 /var/www/umiemyprogramowac.pl/webroot/index.php(113): include('...') #7 {main} thrown in /var/www/umiemyprogramowac.pl/webroot/src/Service/PsService.php on line 69