Reputation: 103
Am currently working on a program to take in TV subscriptions. I seem to have an issue during the output as sub_price["Sports Group Pack" seems to output in 1 decimal place as 21.4 instead of 21.40 which I desire. There also seem to have an output issue as I am getting spaces as such: ($ 21.4 )
The output i am aiming for is something more like ($21.40) I also am unable to make the dollar sign stick to the last 2 numbers printing out the subscription selection. What I am getting is $ 8.56, is it possible to get it to $8.56? Any help would be appreciated.
[Code]
def get_subscription():
sub_price = {
"Sports Group Pack":21.40,
"Documentaries Pack":15.32,
"FOX Movies Pack":17.12,
"HBO Pack":13.98,
"Cinema World":9.56,
"Celestial Movies":8.56}
print("Channels available for subscription (price/mth)")
for key, value in sub_price.items():
print("{0:<40}{1:>2}{2:>5.2f}".format(key,"$",value))
sub01 = input("Subscribe to Sports Group Pack? (Y/N):").upper()
sub02 = input("Subscribe to Documentaries Pack? (Y/N):").upper()
sub03 = input("Subscribe to FOX Movies Pack? (Y/N):").upper()
sub04 = input("Subscribe to HBO Pack? (Y/N):").upper()
sub05 = input("Subscribe to Cinema World? (Y/N):").upper()
sub06 = input("Subscribe to Celestial Movies? (Y/N):").upper()
if sub01 =="N" and sub02 == "N" and sub03 == "N" and sub04 == "N" and sub05 == "N" and sub06 == "N":
print()
print("Your selection:")
print(" - None")
print()
print("Total cost $0.00")
sum=0
if sub01 =="Y" or sub02 == "Y" or sub03 == "Y" or sub04 == "Y" or sub05 == "Y" or sub06 == "Y":
print("Your selection:")
if sub01 == "Y":
print(" - Sports Group Pack", "($", sub_price["Sports Group Pack"],")")
sum = sum + sub_price["Sports Group Pack"]
if sub02 == "Y":
print(" - Documentaries Pack", "($", sub_price["Documentaries Pack"],")")
sum = sum + sub_price["Documentaries Pack"]
if sub03 == "Y":
print(" - FOX Movies Pack", "($", sub_price["FOX Movies Pack"],")")
sum = sum + sub_price["FOX Movies Pack"]
if sub04 == "Y":
print(" - HBO Pack", "($", sub_price["HBO Pack"],")")
sum = sum + sub_price["HBO Pack"]
if sub05 == "Y":
print(" - Cinema World", "($", sub_price["Cinema World"],")")
sum = sum + sub_price["Cinema World"]
if sub06 == "Y":
print(" - Celestial Movies", "($", sub_price["Celestial Movies"],")")
sum = sum + sub_price["Celestial Movies"]
if sub01 =="Y" or sub02 == "Y" or sub03 == "Y" or sub04 == "Y" or sub05 == "Y" or sub06 == "Y":
print()
print("Total cost $%.2f"%sum)
get_subscription()
Upvotes: 1
Views: 161
Reputation: 21305
Change your print statements from this
print(" - Sports Group Pack", "($", sub_price["Sports Group Pack"], ")")
To:
print(" - Sports Group Pack", "(${0:.2f})".format(sub_price["Sports Group Pack"]))
Which should print:
- Sports Group Pack ($21.40)
This is similar to the formatting you're already doing in the for loop at the beginning.
See docs for more details
Upvotes: 1
Reputation: 15528
AFAIK python will automatically strip the 0s from the integer, but there is a way to workaround it. You can define values in dictionary is a string:
sub_price = {
"Sports Group Pack":'21.40',
"Documentaries Pack":'15.32',
"FOX Movies Pack":'17.12',
"HBO Pack":'13.98',
"Cinema World":'9.56',
"Celestial Movies":'8.56'}
And while doing calculations with them, cast to integer On-the-fly with:
int(sub_price['KEY_NAME'])
Upvotes: 1