Bird
Raised Fist0
Flaskframework~20 mins

Parameter type converters (int, float, path) in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flask Parameter Converter Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output when accessing a route with converter?
Consider this Flask route:
from flask import Flask
app = Flask(__name__)

@app.route('/item/<int:id>')
def item(id):
    return f"Item ID is {id}"

What will be the response when visiting /item/42 in the browser?
Flask
from flask import Flask
app = Flask(__name__)

@app.route('/item/<int:id>')
def item(id):
    return f"Item ID is {id}"
AItem ID is 42
BItem ID is '42'
C404 Not Found error
DTypeError because id is not an int
Attempts:
2 left
💡 Hint
The converter ensures the parameter is an integer.
📝 Syntax
intermediate
2:00remaining
Which route definition correctly uses the converter?
You want to create a Flask route that accepts a floating-point number as a URL parameter named price. Which of these route decorators is correct?
A@app.route('/cost/<price:float>')
B@app.route('/cost/<price>')
C@app.route('/cost/<float_price>')
D@app.route('/cost/<float:price>')
Attempts:
2 left
💡 Hint
The converter syntax is <converter:name>.
🔧 Debug
advanced
2:30remaining
Why does this route cause a 404 error for a path with slashes?
Given this Flask route:
@app.route('/files/<path:filename>')
def files(filename):
    return f"File requested: {filename}"

What happens when you visit /files/docs/manual.pdf? Why might a similar route without path: cause a 404 error?
Flask
@app.route('/files/<path:filename>')
def files(filename):
    return f"File requested: {filename}"
AThe route matches but filename is only 'manual.pdf'; 'path:' has no effect.
BThe route causes a 404 because 'path:' is invalid syntax in Flask routes.
CThe route matches and filename is 'docs/manual.pdf'; without 'path:' it would only match 'docs' causing 404.
DThe route matches but filename is a list of path parts, not a string.
Attempts:
2 left
💡 Hint
The 'path' converter allows slashes in the parameter.
❓ state_output
advanced
2:00remaining
What is the type and value of the parameter inside the view function?
Examine this Flask route:
@app.route('/price/<float:cost>')
def show_price(cost):
    return f"Cost is {cost} and type is {type(cost).__name__}"

What will be the output when visiting /price/19.99?
Flask
@app.route('/price/<float:cost>')
def show_price(cost):
    return f"Cost is {cost} and type is {type(cost).__name__}"
ACost is '19.99' and type is str
BCost is 19.99 and type is float
CCost is 19 and type is int
DCost is 19.99 and type is str
Attempts:
2 left
💡 Hint
The converter converts the parameter to a float type.
🧠 Conceptual
expert
3:00remaining
Why use converter instead of for file paths?
In Flask routing, what is the main reason to use the <path:filename> converter instead of the default <string:filename> when accepting file paths as parameters?
A<path:> allows slashes in the parameter, so it can capture nested paths; <string:> stops at the first slash.
B<path:> automatically decodes URL-encoded characters; <string:> does not.
C<path:> converts the parameter to a list of strings; <string:> keeps it as a single string.
D<path:> is faster to process than <string:> for long strings.
Attempts:
2 left
💡 Hint
Think about how URLs with slashes are matched by Flask converters.

Practice

(1/5)
1. What does the int converter do in a Flask route parameter like <int:id>?
easy
A. It matches any text including slashes.
B. It ensures the parameter is an integer and converts it automatically.
C. It converts the parameter to a string.
D. It converts the parameter to a floating-point number.

Solution

  1. Step 1: Understand the role of int converter

    The int converter tells Flask to accept only integer values for that URL part.
  2. Step 2: Check what happens with the parameter

    Flask automatically converts the matched URL part to an integer type before passing it to the view function.
  3. Final Answer:

    It ensures the parameter is an integer and converts it automatically. -> Option B
  4. Quick Check:

    int converter = integer parameter [OK]
Hint: int converter means only whole numbers allowed [OK]
Common Mistakes:
  • Thinking int converts to string
  • Confusing int with float converter
  • Assuming int matches any text
2. Which of the following is the correct syntax to define a Flask route that accepts a floating-point number parameter named price?
easy
A. @app.route('/item/<path:price>')
B. @app.route('/item/<int:price>')
C. @app.route('/item/<float:price>')
D. @app.route('/item/<str:price>')

Solution

  1. Step 1: Identify the correct converter for floating-point numbers

    The float converter is used to accept decimal numbers in the URL.
  2. Step 2: Match the syntax for route parameter

    The correct syntax is <float:price> inside the route decorator.
  3. Final Answer:

    @app.route('/item/<float:price>') -> Option C
  4. Quick Check:

    float converter = decimal number parameter [OK]
Hint: Use for decimal numbers in route parameters [OK]
Common Mistakes:
  • Using int instead of float for decimals
  • Using str which is not a Flask converter
  • Using path which allows slashes, not numbers
3. Given this Flask route:
@app.route('/files/<path:filename>')
def show_file(filename):
    return f"File requested: {filename}"

What will be the output if the URL is /files/docs/manual.pdf?
medium
A. File requested: docs/manual.pdf
B. File requested: manual.pdf
C. 404 Not Found error
D. File requested: docs

Solution

  1. Step 1: Understand the path converter behavior

    The path converter matches the entire remaining path including slashes.
  2. Step 2: Analyze the URL and parameter value

    The URL /files/docs/manual.pdf matches filename as docs/manual.pdf.
  3. Final Answer:

    File requested: docs/manual.pdf -> Option A
  4. Quick Check:

    path converter = matches full path with slashes [OK]
Hint: path converter captures slashes in URL parts [OK]
Common Mistakes:
  • Assuming path stops at first slash
  • Expecting 404 error for slashes in parameter
  • Confusing path with string converter
4. What is wrong with this Flask route definition?
@app.route('/product/<int:product_id>/<float:price>')
def show_product(product_id, price):
    return f"Product {product_id} costs {price}"

When accessing /product/abc/19.99, what error occurs?
medium
A. ValueError because 'abc' is not an integer
B. TypeError because price is not a float
C. No error, it works fine
D. 404 Not Found error due to URL mismatch

Solution

  1. Step 1: Check the int converter requirement

    The first parameter expects an integer, but 'abc' is not an integer.
  2. Step 2: Understand Flask routing behavior on type mismatch

    Flask does not raise ValueError but returns 404 Not Found if the URL does not match the route pattern.
  3. Final Answer:

    404 Not Found error due to URL mismatch -> Option D
  4. Quick Check:

    Type mismatch in route = 404 error [OK]
Hint: Wrong type in URL parameter causes 404, not exception [OK]
Common Mistakes:
  • Expecting Python exceptions instead of 404
  • Confusing ValueError with Flask routing errors
  • Assuming route matches any string
5. You want to create a Flask route that accepts a file path parameter which may include slashes, and an integer version number after it, like /download/docs/manual/2. Which route definition correctly uses converters to achieve this?
hard
A. @app.route('/download/<path:filepath>/<int:version>')
B. @app.route('/download/<int:version>/<path:filepath>')
C. @app.route('/download/<path:filepath><int:version>')
D. @app.route('/download/<path:filepath>/<float:version>')

Solution

  1. Step 1: Identify the order of parameters in the URL

    The URL pattern is /download/ followed by a path (which may include slashes), then a slash, then an integer version.
  2. Step 2: Use path for filepath and int for version in correct order

    The route must be /download/<path:filepath>/<int:version> to match the URL structure.
  3. Final Answer:

    @app.route('/download/<path:filepath>/<int:version>') -> Option A
  4. Quick Check:

    path then int in route matches URL structure [OK]
Hint: Use path converter before int for multi-part paths [OK]
Common Mistakes:
  • Swapping parameter order
  • Missing slash between parameters
  • Using float instead of int for version
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