这与字典有关

时间:2018-08-22 08:35:29

标签: python python-3.x dictionary addition

我的代码是:

cart={}
line=input('Sale: ')
while line:
  parts = line.split()
  name = parts[0]
  number = parts[1]
  cart[name] = int(number)
  number+=number
  cart.update(cart)
  print(number,name, 'sold so far')
  line = input('Sale: ')

问题是:我输入一个键和一个值。然后代码会说,您已经卖出了此键值。如果在while循环的另一个迭代中输入相同的键,则该值将更新为新值,例如:

Sale: apples 5
5 apples sold so far
Sale: oranges 2
2 oranges sold so far
Sale: apples 3
8 apples sold so far
Sale: 

我以为我的代码可以做到这一点,但是当我键入时:apples5。它吐出了这个:

Sale: apples 5
55 apples sold so far
Sale: 

我认为应该将number + = number添加到以前的变量中,但是会第二次打印出来。请解释并提供帮助。

2 个答案:

答案 0 :(得分:3)

这里有几件事。

您从输入中获取数字,并将其设置为字典键的整数,从而覆盖开头的所有内容。然后,您将原始字符串添加到自己的字符串中;因此,如果您输入“ 5”,则会得到“ 55”。此值与字典中现在的内容无关。然后,您用自身更新购物车,这当然完全不会进行更改。

编程时,您需要考虑逻辑步骤。这可能有助于您在编写代码之前写下英语步骤。在这里,首先,您需要从字典中获取当前值。然后,将您的输入转换为int。接下来,将您现有的值添加到新值,然后将该值设置回字典。最后,打印新的总计。

我不会为此发布确切的代码,因为问题显然是家庭作业,但是希望这可以帮助您解决当前的问题。

答案 1 :(得分:0)

两件事,本例中的数字是一个字符串,因为它被分配了一个字符串值。要将其用作整数,可以像在代码中其他地方一样进行转换:

number = int(parts[1])

number+=number等同于执行number+number并将该值辅助回到number。换句话说,如果它是整数,则每次number的值都会加倍。因此,如果这不是预期的算法,则应进行审查。