Jag Sherrington wrote: > Hi Can anyone tell me where I am going wrong the end result doesn't add > up?
Leaving out the Python side for a moment let's look again at one part of your problem: You need 20 buns. There are 8 buns in a package. How many packages do you need? You could say 2.5 because 2.5 * 8 == 20. But when you go to the shop you are limited to buying complete packages. Two won't do, so you have to take three packages and cope with the 4 extra buns. How can this be calculated in Python? One way is integer division: >>> 20 // 8 2 Integer division always gives you a number equal or one below the actual number of packages: >>> 21 // 8 2 >>> 23 // 8 2 >>> 24 // 8 3 To find out if you need an extra package you can calculate the rest with >>> buns = 20 >>> package_size = 8 >>> buns - (buns // package_size) * package_size 4 You need 4 more buns and thus an extra package. Spelt in Python: >>> buns = 20 >>> package_size = 8 >>> whole_packages = buns // package_size >>> missing_buns = buns - (buns // package_size) * package_size >>> if missing_buns: ... total_packages = whole_packages + 1 ... else: ... total_packages = whole_packages ... >>> total_packages 3 Can we simplify that? Python has an operator to calculate the rest or "modulo" directly: >>> 20 % 8 4 >>> 21 % 8 5 >>> 22 % 8 6 >>> 23 % 8 7 >>> 24 % 8 0 There's also a way to calculate // and % in one step: >>> divmod(20, 8) (2, 4) With that the calculation becomes >>> buns = 20 >>> package_size = 8 >>> whole_packages, missing_buns = divmod(buns, package_size) >>> total_packages = whole_packages >>> if missing_buns: total_packages += 1 ... >>> total_packages 3 You can also find out the leftover buns: >>> unused_buns = (total_packages * package_size) % buns >>> unused_buns 4 Enjoy your meal ;) _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor