3 回答
TA贡献1921条经验 获得超9个赞
这里有几件事。
您从输入中获取数字并将其设置为字典键的整数,覆盖任何开始的内容。然后,您将原始字符串添加到自己的字符串中;因此,如果您输入“ 5”,则会得到“ 55”。该值与字典中现在的内容无关。然后,您使用自身来更新购物车,这当然不会进行任何更改。
编程时,您需要考虑逻辑步骤。它可以帮助您在编写代码之前写下英语步骤。在这里,首先,您需要从字典中获取当前值。然后,将您的输入转换为 int。接下来,将现有值添加到新值,并将该值设置回字典。最后,打印新的总计。
我不会为此发布确切的代码,因为问题显然是家庭作业,但希望这可以帮助您解决当前的问题。
TA贡献1824条经验 获得超6个赞
尝试遵循@Daniel Roseman 的建议,最好自己尝试一下。但是,如果您遇到困难,这里有一些可能会有所帮助的内容。
cart={}
line=raw_input('Sale: ')
while line:
parts = line.strip().split()
name = parts[0]
number = int(parts[1]) #converting number from string to int
#this checks if key already exists in the dictionary, if it does not it is created
if name not in cart:
cart[name] = number
#otherwise it is updated
else:
cart[name] += number
#you were trying to do number += number; in your case you did not change number to int variable
#so number was being treated as string and in context of string += is basically
#concatenating the string.
print(str(cart[name]) + ' ' + name + ' sold so far')
line = raw_input('Sale: ')
TA贡献1815条经验 获得超6个赞
两件事,在这种情况下,数字是一个字符串,因为它被分配了一个字符串值。要将它用作整数,可以像在代码中的其他地方那样进行转换:
number = int(parts[1])
并number+=number等同于number+number将这一价值归还给number。换句话说,number如果它是一个整数,它每次的值都会加倍。因此,如果这不是预期的,则应审查该算法。
添加回答
举报
