“简单的”杂货清单

时间:2018-11-07 16:49:41

标签: python python-3.x

我分配了一个任务,用python创建一个“简单”的杂货清单,在该清单中,用户被要求输入杂货的名称和价格,然后实际购买的商品和数量,然后显示总价。最初问到杂货时,必须将其放入字典中,第二部分询问用户要购买什么,价格必须在第二个循环中,而不仅仅是在第一个循环中询问“您要购买多少”环。这是我到目前为止的内容:

item = {}
choice = 0

while True:
    x = input('enter item: ')
    if x =='done':
        break
    y = float(input('enter price: '))

    item[x] = (y)

while True:

    x=input('enter item: ')

对于第二个“ while true”语句,我尝试了此操作,但没有成功:

while True:

    x=input('enter item: ')

    if x =='done':
        break
    z=input("enter amount you want to purchase: ")
    a=z*y

它回来了

type error, can't multiply sequence by non-int of type 'float'

任何帮助将不胜感激,因为如果我提前提交此课程,我将在星期五跳过清晨的课程。谢谢!

3 个答案:

答案 0 :(得分:0)

因此,第一个循环应获取商品列表及其价格。

items = {}

while True:
    item = input("Item name: ")
    if item == 'done':
        break
    price = input("Item price: ")
    items[item] = price

然后第二部分应询问您要购买的商品和数量

shopping_list = {}

while True:
    item = input("Item name: ")
    if item == 'done':
        break
    qty = input("How many: ")
    shopping_list[item] = qty

因此,第三部分是如何获得总计的信息,如果您有两个字典,一个是键入商品名称(带有价格值),另一个是键入商品名称与数量的价值。我将把最后的实现细节留给您,但是在这里将提供一些提示:

  • some_dictionary[key]将给出存储在该键处的值
  • 如果该词典中不存在该键,它将引发一个KeyError
  • some_dictionary.get(key)将执行相同的操作,但是如果密钥不存在,它将给出None而不是引发错误
  • some_dictionary.get(key, any_value)将执行相同的操作,但是在不存在的键上将返回any_value
  • sum(any_collection_of_numbers)将为您提供这些数字的总和

答案 1 :(得分:0)

编辑:实际上,我谈论的以下内容实际上是在我编写时由OP进行的编辑。

变量choice未使用,因此我们将其删除。据我所知,最后两行没有用,所以我将其删除。一切都可以与一个数据成员连接,因此我为方便起见将其编写为类。

class Groceries:
  def __init__(self):
    self.items= {}
  def run(self):
    while True:
      x = input('enter item: ')
      if x =='done':
          break
      y = float(input('enter price: '))
      self.items[x] = {"Price": y}
  def get_totals(self):
    for j in self.items.keys():
      self.items[j]["Quantity"] = int(
          input('enter how many {} you want: '.format(j)))
      self.items[j]["Total"
                   ] = self.items[j]["Quantity"] * self.items[j]["Price"]
grocer = Groceries()

grocer.run() 

使用以下输入:

enter item: Spam
enter price: 3.5
enter item: Eggs
enter price: 2.5
enter item: done

还有.get_totals()

enter how many Spam you want: 2
enter how many Eggs you want: 4

grocer.items将是:

{'Eggs': {'Price': 2.5, 'Quantity': 4, 'Total': 10.0},
 'Spam': {'Price': 3.5, 'Quantity': 2, 'Total': 7.0}}

答案 2 :(得分:0)

在第二个while循环中,您会收到错误消息。

type error, can't multiply sequence by non-int of type 'float'

因为您将字符串与float变量相乘。
当您编写z=input("enter amount you want to purchase: ") Python时,将其存储为类型'str'。
您只需在input()之前编写所需的类型即可执行类型转换。 就您而言,只需更改此行即可。
 z=(input("enter amount you want to purchase: "))进入。

z=float(input("enter amount you want to purchase: "))

您的程序将起作用。