“简单”的食品杂货

2024-04-26 05:28:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个任务是用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”语句,我尝试了以下方法,但没有奏效:

^{pr2}$

它带着一个

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

如有任何帮助,我将不胜感激,因为如果我提前提交这篇文章,我将在星期五的早课中逃课。谢谢!在


Tags: 用户名称true食品列表input数量type
3条回答

所以第一个循环应该得到项目列表和它们的价格。在

items = {}

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

然后第二部分要问你买的是哪种商品,数量是多少

^{pr2}$

所以第三部分是如果你有两个字典,一个是输入item name的price值,另一个输入item name的数量值。我将把最后的实现细节留给您,但将在这里提供一些提示:

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

编辑:我在下面说的一些东西,实际上是在我写作的时候被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() 

具有以下输入:

^{pr2}$

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

在第二个while循环中,您将得到错误。在

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

因为你将一个字符串与浮点变量相乘。
当您编写z=input("enter amount you want to purchase: ")时,Python将其存储为“str”类型。
您应该执行类型转换,只需在input()之前写入所需的类型。
对于您的情况,只需更改这一行。
z=(input("enter amount you want to purchase: "))进入。在

^{pr2}$

你的计划会成功的。在

相关问题 更多 >