Bird
Raised Fist0
Raspberry Piprogramming~20 mins

Flask web server on Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flask Master on Raspberry Pi
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Flask route response output
What is the output when you visit the root URL '/' of this Flask app running on Raspberry Pi?
Raspberry Pi
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello from Raspberry Pi!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
AHello World!
BHello from Raspberry Pi!
C500 Internal Server Error
D404 Not Found
Attempts:
2 left
💡 Hint
Look at the return value of the home() function.
🧠 Conceptual
intermediate
1:30remaining
Purpose of host='0.0.0.0' in Flask app
Why do we use host='0.0.0.0' when running a Flask app on Raspberry Pi?
ATo allow the Flask app to accept connections from any device on the network
BTo restrict the Flask app to only accept connections from localhost
CTo enable HTTPS encryption automatically
DTo run the Flask app on a random port
Attempts:
2 left
💡 Hint
Think about network accessibility from other devices.
🔧 Debug
advanced
2:30remaining
Identify the error in this Flask app code
What error will this Flask app code produce when run on Raspberry Pi?
Raspberry Pi
from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello():
    return 'Hello!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')
AIndentationError: expected an indented block
BTypeError: app.route() missing required positional argument
CNameError: name 'app' is not defined
DNo error, runs fine
Attempts:
2 left
💡 Hint
Check the indentation of the function body.
❓ Predict Output
advanced
2:00remaining
Flask app with dynamic URL parameter output
What is the output when visiting '/user/Alice' on this Flask app running on Raspberry Pi?
Raspberry Pi
from flask import Flask
app = Flask(__name__)

@app.route('/user/<name>')
def user(name):
    return f'User: {name}'

if __name__ == '__main__':
    app.run(host='0.0.0.0')
A404 Not Found
BUser: <name>
CUser: Alice
DUser: user
Attempts:
2 left
💡 Hint
Look at how the URL parameter is used in the return string.
📝 Syntax
expert
3:00remaining
Identify the syntax error in this Flask app snippet
Which option correctly identifies the syntax error in this Flask app code snippet?
Raspberry Pi
from flask import Flask
app = Flask(__name__)

@app.route('/data')
def data():
    return {'value': 42}

if __name__ == '__main__':
    app.run(host='0.0.0.0')
AFlask app must import jsonify to return JSON data
BMissing colon after the function definition line
Capp.run() missing required port argument
DReturning a dictionary directly causes a TypeError because Flask expects a string or Response object
Attempts:
2 left
💡 Hint
Think about what Flask accepts as a return value from route functions.

Practice

(1/5)
1. What does the @app.route decorator do in a Flask web server on Raspberry Pi?
easy
A. It installs Flask on the Raspberry Pi.
B. It starts the Flask server to listen for requests.
C. It defines the URL path that triggers a specific function.
D. It stops the Flask server from running.

Solution

  1. Step 1: Understand the role of @app.route

    This decorator tells Flask which URL path should run the function below it.
  2. Step 2: Connect URL to function

    When a user visits that URL, Flask runs the linked function to generate a response.
  3. Final Answer:

    It defines the URL path that triggers a specific function. -> Option C
  4. Quick Check:

    @app.route sets URL path [OK]
Hint: Remember: route = URL path to function [OK]
Common Mistakes:
  • Thinking it starts or stops the server
  • Confusing it with installing Flask
  • Assuming it runs the server automatically
2. Which of the following is the correct way to run a Flask app on Raspberry Pi so it is accessible from other devices on the network?
easy
A. app.run(host='0.0.0.0')
B. app.run(host='127.0.0.1')
C. app.run()
D. app.run(port=8080)

Solution

  1. Step 1: Understand host parameter in app.run()

    By default, Flask listens only on localhost (127.0.0.1), meaning only the Pi itself can access it.
  2. Step 2: Use host='0.0.0.0' to allow network access

    Setting host to '0.0.0.0' tells Flask to listen on all network interfaces, so other devices can connect.
  3. Final Answer:

    app.run(host='0.0.0.0') -> Option A
  4. Quick Check:

    host='0.0.0.0' allows network access [OK]
Hint: Use host='0.0.0.0' to share server on network [OK]
Common Mistakes:
  • Using default host which blocks external access
  • Confusing port with host
  • Using localhost IP which restricts access
3. What will be the output when you visit http://raspberrypi.local/hello given this Flask code on Raspberry Pi?
from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello():
    return 'Hello, Raspberry Pi!'

if __name__ == '__main__':
    app.run(host='0.0.0.0')
medium
A. Server does not start
B. 404 Not Found error
C. SyntaxError
D. Hello, Raspberry Pi!

Solution

  1. Step 1: Check the route and function

    The route '/hello' is defined and returns the string 'Hello, Raspberry Pi!'.
  2. Step 2: Accessing the URL

    Visiting /hello triggers the function and returns the string as the web page content.
  3. Final Answer:

    Hello, Raspberry Pi! -> Option D
  4. Quick Check:

    Route '/hello' returns greeting string [OK]
Hint: Match URL path to function return value [OK]
Common Mistakes:
  • Expecting a 404 error if route is correct
  • Thinking code has syntax errors
  • Assuming server won't start with host='0.0.0.0'
4. Identify the error in this Flask code snippet intended to run on Raspberry Pi:
from flask import Flask
app = Flask(__name__)

@app.route('/status')
def status():
print('Server is running')

if __name__ == '__main__':
    app.run(host='0.0.0.0')
medium
A. Incorrect host value in app.run().
B. Missing indentation for the print statement inside the function.
C. Missing import statement for Flask.
D. Route decorator syntax is wrong.

Solution

  1. Step 1: Check function body indentation

    The print statement inside the function must be indented to be part of the function block.
  2. Step 2: Verify other parts

    Host value '0.0.0.0' is correct, Flask is imported, and route syntax is valid.
  3. Final Answer:

    Missing indentation for the print statement inside the function. -> Option B
  4. Quick Check:

    Python requires indentation inside functions [OK]
Hint: Indent function code properly in Python [OK]
Common Mistakes:
  • Ignoring indentation errors
  • Changing host unnecessarily
  • Misreading route decorator syntax
5. You want your Flask app on Raspberry Pi to show different messages at / and /info. Which code correctly sets up these two routes?
hard
A. from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Welcome!' @app.route('/info') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0')
B. from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Welcome!' @app.route('/') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0')
C. from flask import Flask app = Flask(__name__) @app.route('/info') def home(): return 'Welcome!' @app.route('/') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0')
D. from flask import Flask app = Flask(__name__) @app.route('/home') def home(): return 'Welcome!' @app.route('/info') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0')

Solution

  1. Step 1: Check route paths and functions

    from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Welcome!' @app.route('/info') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0') correctly uses '/' for home and '/info' for info, each with its own function returning the right message.
  2. Step 2: Verify no route conflicts

    from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Welcome!' @app.route('/') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0') uses '/' twice, which causes conflict. from flask import Flask app = Flask(__name__) @app.route('/info') def home(): return 'Welcome!' @app.route('/') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0') swaps routes and functions incorrectly. from flask import Flask app = Flask(__name__) @app.route('/home') def home(): return 'Welcome!' @app.route('/info') def info(): return 'Raspberry Pi Info' app.run(host='0.0.0.0') uses '/home' instead of '/'.
  3. Final Answer:

    Option A correctly defines two distinct routes '/' and '/info'. -> Option A
  4. Quick Check:

    Unique routes need unique paths [OK]
Hint: Use unique URLs for each route function [OK]
Common Mistakes:
  • Defining two functions for the same route
  • Swapping route paths and function names
  • Using wrong URL paths like '/home' instead of '/'
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard