这与字典有关

我的代码是:


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: 

我以为我的代码会这样做,但是当我输入:apples 5 时,它会吐出这个:


Sale: apples 5

55 apples sold so far

Sale: 

我以为number + = number应该被添加到以前的变量中,但是它第二次打印了它。如果可以,请解释并提供帮助。


慕莱坞森
浏览 222回答 3
3回答

郎朗坤

这里有几件事。您从输入中获取数字并将其设置为字典键的整数,覆盖任何开始的内容。然后,您将原始字符串添加到自己的字符串中;因此,如果您输入“ 5”,则会得到“ 55”。该值与字典中现在的内容无关。然后,您使用自身来更新购物车,这当然不会进行任何更改。编程时,您需要考虑逻辑步骤。它可以帮助您在编写代码之前写下英语步骤。在这里,首先,您需要从字典中获取当前值。然后,将您的输入转换为 int。接下来,将现有值添加到新值,并将该值设置回字典。最后,打印新的总计。我不会为此发布确切的代码,因为问题显然是家庭作业,但希望这可以帮助您解决当前的问题。

慕妹3242003

尝试遵循@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: ')

红糖糍粑

两件事,在这种情况下,数字是一个字符串,因为它被分配了一个字符串值。要将它用作整数,可以像在代码中的其他地方那样进行转换:number = int(parts[1])并number+=number等同于number+number将这一价值归还给number。换句话说,number如果它是一个整数,它每次的值都会加倍。因此,如果这不是预期的,则应审查该算法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python