Look at your string formatting
print( "Best price for you is $%.2f with %s shiphing" %(method,cost) )
What would you think the program would try to interpret with %?
In this case, the order of the %() parameters counts. They have to reflect the order they appear in the string.
Each error message is a clue and opportunity to get to know the language better. You should definitely look for documentation/references because not only will they help you solve the problem, but they will give you the foundational reason as to why it is (which is much more important).
Especially while learning, “getting the code to run” is not as important as building foundational knowledge. I’d rather have my code break every 10 minutes and learn something than have something that runs fine but I don’t learn anything from it.