Hoe repareer ik “IndentationError: verwacht een ingesprongen blok” in Python?

Ik probeer een API-test uit te voeren op een URL met Python, ik heb het volgende codeblok

      def simple_get(url):
        try:
            page_response = requests.get(page_link, timeout=5)
            if page_response.status_code == 200:
            # extract
            else:
                print(page_response.status_code)
                # notify, try again
        except requests.Timeout as e:
            print("It is time to timeout")
            print(str(e))
        except # other exception

Als ik het uitvoer, krijg ik de volgende foutmelding

File "<ipython-input-16-6291efcb97a0>", line 11
else:
   ^
IndentationError: expected an indented block

Ik begrijp niet waarom het notitieblok nog steeds om inspringing vraagt terwijl ik de “else”-instructie al heb laten inspringen


Antwoord 1, autoriteit 100%

Het probleem is dat je het programma niet hebt verteld wat het moet doen als aan de eerste voorwaarde is voldaan (if-statement). Als je niet zeker weet wat je moet doen als, kun je de ingebouwde ‘pass’ van python gebruiken.

if page_response.status_code == 200:
    pass
else:
    print(page_response.status_code)

Antwoord 2, autoriteit 100%

Dit is een heel basisconcept in Pythonom te beginnen met coderen:
Regels die beginnen met #worden binnen een codeblok genegeerd.

De code hier

   if page_response.status_code == 200:
    # extract
    else:
        print(page_response.status_code)

letterlijk vertaald als

   if page_response.status_code == 200:
    else:
        print(page_response.status_code)

en produceert daarom IndentationError.

Je kunt het oplossen door ten minste een pass-opdracht of een willekeurige werkregel in de if-instructie te plaatsen.

Een soortgelijke vraag is al eerder gesteld:
Python: verwacht een ingesprongen blok


Antwoord 3

import requests
from bs4 import BeautifulSoup
def simple_get(url):
    try:
        page_response = requests.get(url, timeout=5)
        if page_response.status_code == 200:
            print(page_response.status_code)
            pass
            # extract
        else:
            print(page_response.status_code)
            # notify, try again
    except requests.Timeout as e:
        print("It is time to timeout")
        print(str(e))
simple_get("https://www.nytimes.com/")

Other episodes