首页 > 解决方案 > 需要帮助在字典中以小数点后 2 位打印项目以及间距问题。[Python]

问题描述

我目前正在开发一个接收电视订阅的计划。在输出过程中我似乎遇到了问题,因为 sub_price["Sports Group Pack" 似乎以小数点后 1 位输出为 21.4 而不是我想要的 21.40。似乎还有一个输出问题,因为我得到了这样的空间:($ 21.4)

我的目标输出更像(21.40 美元)我也无法让美元符号坚持打印订阅选择的最后 2 个数字。我得到的是 8.56 美元,是否有可能达到 8.56 美元?任何帮助,将不胜感激。

[代码]

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()

标签: pythondictionary

解决方案


AFAIK python 会自动从整数中去除 0,但有一种解决方法。您可以在字典中定义值是一个字符串:

 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'}

在使用它们进行计算时,使用以下方法即时转换为整数:

int(sub_price['KEY_NAME'])

推荐阅读