我正在制定一项计划,在满足条件之前提供折扣:
If number of purchases > 4 give a 20% discount where the type of purchase is not a pet.
我的列表从用户输入附加,我创建了一个单独的整数来跟踪列表中的元素数量,但是,当我打印该整数时,该值始终为0.为了进一步进入此程序,我需要整数来正确保持正确的值。到目前为止,这是我的代码。我是初学者,所以有点乱。
prices=[]
isPet=[]
nItems = len(prices)
def discount(prices, isPet, nItems):
while True:
price=input("Enter the price, (-1 to quit): ")
prices.append(price)
pet=input("Is it a pet? (Y/N, or -1 to quit) ")
isPet.append(pet)
if prices[-1] == "-1" and isPet[-1] == "-1":
prices = prices[:-1]
isPet = isPet[:-1]
break
print(nItems)
if nItems > 4 and isPet == "N":
discount = sum(prices)*0.8
print("The discount is: ", discount)
discount(prices, isPet, nItems)
我在第16行打印了nItems以查看它是否正确存储len(价格),而且我发现它是在打印0
答案 0 :(得分:1)
那是因为当列表仍为空时,你在顶部执行了len()
函数:
prices=[]
# ...
nItems = len(prices)
调用len()
会生成一个结果,此处为整数0
,然后将名称nItems
设置为引用该结果。
Python不存储有关名称引用的值如何生成的任何内容,nItems
仅引用整数,而不是通过调用应用于列表的函数len()
生成整数{ {1}}。在您为prices
分配不同的内容之前,它会一直指向nItems
。
然后调用0
,并在函数print discount()
中调用。它仍引用nItems
,因此会打印0
。
如果您要打印0
的长度,则需要再次致电prices
。打印len()
电话的结果:
len()
或将结果分配给变量,然后打印该变量:
print(len(prices))