DH-11 Sensor on a Raspberry Pi & Arduino
Adafruit's may be a popular tutorial but the actual software implementation is perhaps not the best (warning, I have my own software solution so should not be considered impartial).

The DHT11/DHT22 generate a bit stream to encode the reading.  The length of each pulse high time encodes whether the bit is a zero or a one.  Timing these bits is crucial to getting a valid reading.

Most implementations use busy wait timing for the bits which is susceptible to Linux rescheduling problems.  Those implementations do work but are not reliable.  You might need to take three of four readings before you get one which passes the checksum calculation (waiting several seconds between each).

One reliable method is to use the SPI hardware to read the bit stream.  That will get error rates better than 1 in a 100,000 readings.

The other method is to use my pigpio library which times gpio events down to the microsecond level. DHT22 Python example here.  The github has a DHT11 example.

For background information see post