The problem is that you've got the brackets in the wrong place.
When you write this:
print('There are %d cars')%(cars _ available)
...Python will break it down into these steps
- First it will run
print('There are %d cars')
, which is a function that will return the special value None
, which means (like you would expect) "nothing"
- Then it will run
(cars_available)
, which is just your variable with brackets around it, so it is the number 100.
- Then it will try to combine the two of them using the
%
operator; this means it's trying to run code that is the equivalent of None % 100
. Because the %
operator doesn't know what to do when the first thing it has been provided with is the None
object (which has the type NoneType
, logically enough) and a number (which is an integer, so it has the type int
), it gives that error.
What you want to do, of course, is use the %
operator to combine the string 'There are %d cars'
with the value in the variable cars_available
, and then print the result. You do that by making the brackets surround that part so that Python knows what order to do things in:
print('There are %d cars' % cars_available)