# Can someone check this code, I'm new to for loops

#1

The code prints the wrong value.

If I were to type in 60 then 65, it should say I have gotten 10 demerits

``````speedLimit = int(input("What is the speed limit in this area? "))
speed = int(input("What speed was the vehicle traveling at? "))
speedOverLimit = int(speed-speedLimit)

print(speedOverLimit)

for speedOverLimit in range(1,11):
demerits=10
for speedOerLimit in range(12,21):
demerits=20
for speedOverLimit in range(22,31):
demerits=35
for speedOverLimit in range(32,36):
demerits=40
for speedOverLimit in range(36,1000):
print("demerits=50")
break

print(demerits)``````

#2

Please post a link to the exercise. This does not look familiar.

The problem suggests more of a control flow solution than a loop construct:

``````sol = speedOverLimit    # for simplicity
if sol in range(1, 11):
demerits = 10
elif sol in range(11, 21):
demerits = 20
elif sol in range(21, 31)
demerits = 30
elif sol in range(31, 41):
demerits = 40
else:
demerits = 50``````

I've arbitrarily tweaked the numbers to continue the pattern.

Consider a mathematical approach to simplify the above:

``````    if sol > 40:
demerits = 50
else:
coef = sol / 10 + 1
demerits = coef * 10``````

Given fixed data ranges, this is the most efficient approach.

We can emulate a switch using a dictionary. Take for example this method of assigning a letter grade:

``````def get_letter_grade(grade):
G = {'F':(0,60),'D':(60,70),'C':(70,80),'B':(80,90),'A':(90,101)}
for letter in G:
a, b = G[letter]