# [Tutor] if-elif-else statements

Danny Yoo dyoo at hkn.eecs.berkeley.edu
Fri Oct 14 02:41:35 CEST 2005

```
On Thu, 13 Oct 2005 andrade1 at umbc.edu wrote:

> amount is supposed to equal fine because there are a couple of different
> fines. there is a fine for going over 90mph that includes a penalty and
> then there is a fine for just going over the speed limit as long as it
> is under 90.

Because this is homework, we can not really give you specific reasons why
your program isn't working: we can only give you indirect strategies and

Has your teacher talked about using and writing functions yet?  It looks
like you have a single main() function to do all the work, and since it's
monolithic, it's hard to test effectively.

It would be very useful if you had a separate 'get_fine()' function that
took the legal and clocked speed limit values, and returned the fine from
those values.

If you had such a function, then you'd be able to more easily test it with
hardcoded values, like:

######
assert get_fine(100, 50) == 500
######

so you don't have to continue retyping your input every time you make a

In fact, I'd recommend temporarily disabling user input for the moment, at
least until you get a get_fine() function that passes simple tests.
Otherwise, what's the point of asking the user for input, if it always

about it on the list, and I'm sure folks on the list can give a few
examples that demonstrate the technique.

Also, consider simplifying the problem statement: it looks like you're
trying to handle too much at once, with the end result that none of it is
really working right.  It's easier to take a program that is running
correctly and then adding more things to it, than to take a program that
isn't working, and trying to make it correct.

Concretely: can you write a get_fine() function that doesn't care about
the >90mph penalty first?  As it stands, your program will give very
strange results even if there is no speeding going on --- why should the
police owe the speeder money?

```