import math #Version 1: basic #Version 2: round up #Version 3: next, ONLY enter numbers #Version 4: ask again for a number - already done! #Version 5: no negative numbers def inputNumber(message): while True: try: returnValue = float(raw_input(message)) if returnValue < 0: raise ValueError else: return returnValue except ValueError: return inputNumber("Not a non-negative value! Try again.") #print("Enter a tip:") x = inputNumber("Enter a tip:") print("Tip is: " + str(x)) #print("Enter a bill/total: ") y = inputNumber("Enter a bill/total: ") print("Bill is: " + str(y)) #this won't work because I need a precision factor (cents) in my ceil() #so use full ints? print("Tip is: " + str((y * x/100)*100) + " cents") #cents print("Tip rounded up is: " + str(math.ceil((y * x/100)*100)) + " cents") #what do I expect? print("Total is: " + str(y + (y * x/100))) #with 3% and 1.85 should be 1.91 print("Total rounded up is: " + str(y + math.ceil((y * x/100)*100)/100))
I notice that I don't always have the right precision...my money isn't necessarily two decimal spots. I think I know how to fix that with a decimal or I could bite the bullet and use one of the money packages/imports that exists. That might be part 8. I notice I have to flip it to a GUI coming up here soon...I'll have to port this code over to javascript (although I'd be much, much faster with C#).
Enter a tip:-1 Tip is: -1.0 Enter a bill/total: 1.50 Bill is: 1.5 Tip is: -1.5 Tip rounded up is: -1.0 Total is: 1.485 Total rounded up is: 1.49 >>> ================================ RESTART ================================ >>> Enter a tip:-1 Not an integer! Try again.-2 Not an integer! Try again.3 Not an integer! Try again.4 Not an integer! Try again. >>> ================================ RESTART ================================ >>> Enter a tip:-2 Not an integer! Try again.3 Tip is: 3.0 Enter a bill/total: 150 Bill is: 150.0 Tip is: 450.0 Tip rounded up is: 450.0 Total is: 154.5 Total rounded up is: 154.5 >>> ================================ RESTART ================================ >>> Enter a tip:-3 Not a non-negiative value! Try again.0 Tip is: 0.0 Enter a bill/total: 150 Bill is: 150.0 Tip is: 0.0 cents Tip rounded up is: 0.0 Total is: 150.0 Total rounded up is: 150.0 >>> ================================ RESTART ================================ >>> Enter a tip:-2 Not a non-negative value! Try again.-3 Not a non-negative value! Try again.-4 Not a non-negative value! Try again.3 Tip is: 3.0 Enter a bill/total: 17.25 Bill is: 17.25 Tip is: 51.75 cents Tip rounded up is: 52.0 Total is: 17.7675 Total rounded up is: 17.77 >>>
No comments:
Post a Comment