我正在尝试创建一个函数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
答案 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总是在一起。