我分配了一个任务,用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'
任何帮助将不胜感激,因为如果我提前提交此课程,我将在星期五跳过清晨的课程。谢谢!
答案 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: "))
您的程序将起作用。