Mar-03-2019, 06:50 PM
Hello everybody hope your all doing great :D,
I am new to learning python and challenged myself to make a small program for a game i like to play called Star Citizen, the purpous of the program is to take two inputs, player location and player destination. It will then take those two sets of data and calculate from a dictionary what the user can buy at their current location and sell at their destination and what would be the most profitable.
I am running into an issue when it comes calculating this. I believe im probably going about this all wrong so please don't worry about telling me to start from scratch with different ideas.
Here is the code so far:
What i a can't figure out is how to #1 have these floating point numbers be not so large and #2 how to then print out the item in the dictionary that holds the largest number.
Any guidance would be massively appreciated.
Thanks any questions please ask and sorry if the formatting isn't perfect i am a really new to this :).
I am new to learning python and challenged myself to make a small program for a game i like to play called Star Citizen, the purpous of the program is to take two inputs, player location and player destination. It will then take those two sets of data and calculate from a dictionary what the user can buy at their current location and sell at their destination and what would be the most profitable.
I am running into an issue when it comes calculating this. I believe im probably going about this all wrong so please don't worry about telling me to start from scratch with different ideas.
Here is the code so far:
#### taking user information user_purchase_location = input("Were are you planning to buy your goods?").lower() user_sale_destination = input("Where are you planning to sell your goods?").lower() #### dicts of items available to buy and sell at locations along with UEC price. buying_olisar = {'Medical Supply': 17.01,} selling_olisar = {'Agricium': 25.60, 'Aluminum': 1.25, 'Beryl': 4.26, 'Chlorine': 1.57, 'Corundum': 2.53, 'Diamond': 6.90, 'Distilled Spirits': 4.95, 'Fluorine': 2.80, 'Gold': 6.07, 'Hydrogen': 1.02, 'Iodine': 0.41, 'Laranite': 28.91, 'Processed Food': 1.39, 'Quartz': 1.44, 'Scrap': 1.67, 'Stims': 3.40, 'Titanium': 8.27, 'Tungsten': 3.90,} buying_levski = {'Agricultural Supply': 1.11, 'Aluminum': 1.20, 'Hydrogen': 0.98, 'Iodine': 0.38, 'Quartz': 1.37,} selling_levski = {'Agricium': 25.60, 'Altruciatoxine': 11.63, 'Beryl': 4.25, 'Chlorine': 1.56, 'Corundum': 2.53, 'Diamond': 6.07, 'Distilled Spirits': 4.95, 'Fluorine': 2.80, 'Gold': 6.07, 'Laranite': 28.25, 'Medical Supply': 18.00, 'Processed Food': 1.38, 'Scrap': 1.68, 'Stims': 3.40, 'Titanium': 8.27, 'Tungsten': 3.90, 'Widdow': 24.00,} #### Sorting the dict into ascending value instead of alphabetical sort_buying_olisar = sorted(buying_olisar, key=lambda tup: tup[1]) sort_selling_olisar = sorted(selling_olisar, key=lambda tup:(tup[1], tup[0])) sort_buying_levski = sorted(buying_levski, key=lambda tup: tup[1]) sort_selling_levski = sorted(selling_levski, key=lambda tup:(tup[1], tup[0])) #### picking two dicts (buy/sell) and filtering them to print only common elements. def common(curr, other): return set(curr.keys()).intersection(set(other.keys())) tradable_items = common(buying_levski, selling_olisar) #### calculating the prices between possible sales. prices = {k: selling_olisar[k] - buying_levski[k] for k in tradable_items} print(prices)When i run this the figures are coming out as floating point numbers for example:
Quote:Were are you planning to buy your goods?levski
Where are you planning to sell your goods?olisar
{'Quartz': 0.06999999999999984, 'Hydrogen': 0.040000000000000036, 'Iodine': 0.02999999999999997, 'Aluminum': 0.050000000000000044}
What i a can't figure out is how to #1 have these floating point numbers be not so large and #2 how to then print out the item in the dictionary that holds the largest number.
Any guidance would be massively appreciated.
Thanks any questions please ask and sorry if the formatting isn't perfect i am a really new to this :).