创建一个在Python 3中创建两个列表的函数

时间:2015-02-17 02:28:44

标签: python-3.x

我正在尝试创建一个函数getStocks,它从用户获取两个列表,一个包含股票名称列表,第二个包含股票价格列表。这应该在循环中完成,以便它继续获取股票名称和价格,直到用户输入字符串'done'作为股票名称。该函数应返回两个列表。我的主要问题是弄清楚我的参数是什么,如何不断地接受名称和价格,以及我应该使用什么类型的循环。我对编程很新,所以任何帮助都会受到赞赏。我相信我很接近,但我不确定我的错误在哪里。

def getStocks(name,price):
    stockNames = []
    stockPrices = []
    i = 0
    name = str(input("What is the name of the stock?"))
    price = int(input("what is the price of that stock?"))
    while i < len(stockNames):
        stockNames.append(name)
        stockPrices.append(price)
        i += 1
    else:
        if name = done
    return stockNames
    return stockPrices

1 个答案:

答案 0 :(得分:0)

你的问题有点不清楚,但是有些事情是蝙蝠,你不能有两条回程线,一旦你击中第一条,就会离开这个功能。相反,你会写一些类似

的东西
return (stockNames, stockPrices)

其次while循环没有else,所以你实际上设置了你的while循环,然后在开头设置一个if语句来检查字符串是否“完成”,然后相应地采取行动。 Break会让你离开你的最后一个while循环,即使它看起来与if相关联。所以像这样:

while i < len(stockNames):
    if name.upper() == 'DONE':
        break
    else:
        stockNames.append(name)
        stockPrices.append(price)
        i += 1

当你检查你的名字=完成时,你还必须使用==(比较)而不是=(赋值)。并且不要忘记done是一个字符串,所以它需要在引号中,我使用.upper()来使输入所有大写覆盖,如果它的小写或大写。

如果你能稍微澄清一下你的问题,我可以更新这个答案,把所有内容放在一起。我不太明白为什么你想输入一个列表然后也接受用户输入,除非你附加到那个列表,此时你想把整个东西放在while循环中。

更新

根据你的评论,你可以做这样的事情并将整个事情包含在while循环中。这将获取传入的两个列表(假设您在某处创建了主列表)并将它们都发送到getStocks函数,其中有人可以继续追加到预先存在的列表,然后当它们键入完成或DONE或DoNe(不因为你使用.upper()来使输入大写,你打破了你的while循环并返回更新的列表:

def getStocks(name, price):
    stockNames = name
    stockPrices = price

    while 1:
        inputName = str(input("What is the name of the stock?"))
        inputPrice = int(input("what is the price of that stock?"))

        if name.upper() != 'DONE':
            stockNames.append(inputName)
            stockPrices.append(inputPrice)
        else:
            break

    return (stockNames, stockPrices)

但实际上,根据结构的其余部分,你可能想要创建一个字典,而不是有两个单独的列表,这样一切都保留在键:值对中,所以不必检查两者上的索引0并希望他们没有被一些流氓功能所改变,你有关键:“stock_x”的值对:48总是在一起。