CHAPTER 13 VISUAL LAB - Inspect conversion and record acceptance
Book boards: 13a and 13b

PRACTICE ROUTINE
Cover the board answer. Predict aloud, try the example, compare with the
stated result, change one input, and try again. Explain a discrepancy
before changing another thing. All marketing examples are fictional.

Use boards 13a and 13b. Open walkthrough.py in Thonny and press F5. This is
an offline miniature of numeric-field validation. It reads no files and
writes no output files; the full file reader remains python/chapter13.py.

EXPECTED OUTPUT
Converted starter row: 25.0
Ordinary: accepted; 300.0 EUR; 12 enquiries
Unknown cost: rejected
Negative count: rejected
Zero count: accepted; 90.0 EUR; 0 enquiries
Fractional count: rejected

FOLLOW THE CODE
float and int convert suitable text. Failed conversion raises ValueError.
The later explicit checks reject non-finite cost and negative quantities.
A known zero enquiry count is accepted data, but its rate would be unavailable.
This miniature does not replace the full reader's header, field-count,
blank-label and whole-file checks.

CHANGE, PREDICT, CHECK
Change the Fractional count example from "2.5" to "2". Predict the last line.
Answer: Fractional count: accepted; 20.0 EUR; 2 enquiries. The label remains
the example's name; the supplied count now satisfies this format.

FILE PRACTICE
Make your own copy of start_here/campaigns.csv and follow Chapter 13's reader
instructions. Change one cost to unknown. The run should stop before writing
a completed cleaned output. Any older cleaned file is still an older result.
Restore the valid cost and check three records, EUR 620 and thirty enquiries.
