“python中的记录”;关键字can';不要成为一种表达;命名双倍

“python中的记录”;关键字can';不要成为一种表达;命名双倍,python,Python,我在我的计算机课上学习记录,我知道它们就像数据库中的记录。我被告知要使用namedtuples。但我的代码不起作用。运行时出现“关键字不能是表达式”错误 from collections import namedtuple product = namedtuple("Product", "Product Name", "Stock Number", "Price", "Purchased") def Setup(product): shoppingBasket = [] sh

我在我的计算机课上学习记录,我知道它们就像数据库中的记录。我被告知要使用namedtuples。但我的代码不起作用。运行时出现“关键字不能是表达式”错误

from collections import namedtuple

product = namedtuple("Product", "Product Name", "Stock Number", "Price", "Purchased")

def Setup(product):
    shoppingBasket = []
    shoppingBasket[0] = product("Product Name" = "USB cable", "Stock Number" = 624, "Price" = 1.74, "Purchased" = False)
    shoppingBasket[1] = product("Product Name" = "HDMI adaptor", "Stock Number" = 523, "Price" = 5.00, "Purchased" = False)
    shoppingBasket[2] = product("Product Name" = "DVD-RW pack", "Stock Number" = 124, "Price" = 10.99, "Purchased" = False)

    return shoppingBasket



def Main():
    shoppingBasket = Setup(product)
    cart = []
    for item in shoppingBasket:
        addItem = raw_input("Would you like to buy this item? ")
        if addItem == "yes":
            shoppingBasket[item].Purchased = True
            cart.append(shoppingBasket)
    total = calculate(cart)


def calculate(cart):
    total = 0 
    for item in cart:
        total += item.Price
    return total 

它说错误出现在第7行,我将shoppingBasket[0]设置为我认为是一个记录。这里怎么了

您的代码中有许多错误。 在第二行中,命名元组的语法应该是

product = namedtuple("Product", "ProductName StockNumber Price Purchased")
您不能说shoppingBasket[0],因为该列表在该索引处没有元素。您将得到一个列表索引超出范围错误。此外,“关键字不能是表达式”错误是由于语法错误造成的。正确的说法是

shoppingBasket.append(product( "USB cable", 624,  1.74, False))
然后在for循环中,不能使用shoppingBasket[item],因为循环中迭代的项不是列表索引。你应该使用范围和长度

for item in range(len(shoppingBasket)):
    print shoppingbasket[item]
    addItem = raw_input("Would you like to buy this item? ")
    if addItem == "yes":
        shoppingBasket[item].Purchased = True
        cart.append(shoppingBasket)
total = calculate(cart)
最后,声明

shoppingBasket[item].Purchased = True
将不起作用,因为namedtuples是不可变的,无法设置属性。 因此,如果这是您的代码,那么使用namedtuples是不起作用的。您必须使用recordtype,它不是Python固有的

from recordtype import recordtype
product = recordtype("Product", "ProductName StockNumber Price Purchased")

对代码进行这些更改并试用。

不,对不起,我不是这个意思。我的意思是记录字典和链表只是在列表中循环。好的,我读了维基百科关于记录和链表的页面。它们看起来像是可以使用列表和字典实现的数据结构。链接列表,记录-当我在谷歌上搜索链接列表和记录时,这些事情会出现,问题是我真的不了解那里发生了什么。试着更具体地说明你不了解的内容,编辑你的问题,或者最好发布一个新的问题。到时候会有更多的人关注你的问题。你的高级课程的目的不是教你这些东西吗?也许你也可以从维基百科的文章中学到一些东西。