为什么我的python在列表中提供相同的输出,而不管输入是什么?

2024-04-23 19:10:37 发布

您现在位置:Python中文网/ 问答频道 /正文

def choosecolours():
    colourletters = ["g","b","r","m","o","c"]
    colourlist = []
    while len(colourlist) < 3:
        colour = input("First choose a colour by entering the first letter of the colour you like: ")

    if colour in colourletters:
            colourlist.append(colour)
        else:
            print("Enter a valid letter!")
print(colourlist)

当我输入这个代码时,不管我输入什么,我总是得到输出['r','b','m']。我看不出这个代码不起作用的任何原因?你知道吗


Tags: the代码inputbylendeffirstprint
2条回答

您的代码中有colourlist定义的globaly elsware吗。 因为您没有返回colourlist,所以当您尝试在函数外部访问它时,它应该显示为未定义,除非您在其他地方有它。如果是这样,那么当您全局访问它时,您只会得到另一个全局引用的引用。你知道吗

按原样运行上述代码会出现错误:

NameError: name 'colourlist' is not defined

尝试:

def choosecolours():
    ...
    return colourlist

list = choosecolours()
print(list)

这与变量的范围有关。本地定义的变量包含在本地,即在函数中使用var的变量不能在函数外访问,因为该名称在函数末尾被释放。你知道吗

请尝试以下代码:

def choosecolours():
    colourletters = ["g","b","r","m","o","c"]
    colourlist = list()
    while len(colourlist) < 3:
        colour = input("First choose a colour by entering the first letter of the colour you like: ")
        if colour in colourletters:
            colourlist.append(colour)
        else:
            print("Enter a valid letter!")
    return colourlist

output = choosecolours()
print(output)

如果要使用外部函数中的变量,可以将指向该函数的变量指针作为参数。你知道吗

相关问题 更多 >