我的代码是:
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添加到以前的变量中,但是会第二次打印出来。请解释并提供帮助。
答案 0 :(得分:3)
这里有几件事。
您从输入中获取数字,并将其设置为字典键的整数,从而覆盖开头的所有内容。然后,您将原始字符串添加到自己的字符串中;因此,如果您输入“ 5”,则会得到“ 55”。此值与字典中现在的内容无关。然后,您用自身更新购物车,这当然完全不会进行更改。
编程时,您需要考虑逻辑步骤。这可能有助于您在编写代码之前写下英语步骤。在这里,首先,您需要从字典中获取当前值。然后,将您的输入转换为int。接下来,将您现有的值添加到新值,然后将该值设置回字典。最后,打印新的总计。
我不会为此发布确切的代码,因为问题显然是家庭作业,但是希望这可以帮助您解决当前的问题。
答案 1 :(得分:0)
两件事,本例中的数字是一个字符串,因为它被分配了一个字符串值。要将其用作整数,可以像在代码中其他地方一样进行转换:
number = int(parts[1])
number+=number
等同于执行number+number
并将该值辅助回到number
。换句话说,如果它是整数,则每次number
的值都会加倍。因此,如果这不是预期的算法,则应进行审查。