3 回答

TA貢獻1831條經驗 獲得超9個贊
您可以使函數接受當前lineList作為參數并在更改后返回。例如:
##Add Line
def addLine(lineList):
lines = ""
while lines != "#":
lines = input ("Add a line: ")
lineList.append(lines)
for (i, item) in enumerate(lineList, start=1):
print(str(i)+":", item)
return lineList
##Delete Line
def deleteLine(lineList):
lineNum = int(input("Enter line: "))
del lineList[(lineNum)]
for (i, item) in enumerate(lineList, start=1):
print(str(i)+":", item)
return lineList
##Find and replace string
def findReplace(lineList):
findString = input("Find string: ")
replaceString = input ("Replace with: ")
for n, i in enumerate(lineList):
if i == findString:
lineList[n] = replaceString
for (i, item) in enumerate(lineList, start=1):
print(str(i)+":", item)
return lineList
lineList = []
while True:
command = input("Enter command (a, d, f): ")
if command == "a":
lineList = addLine(lineList)
elif command == "d":
lineList = deleteLine(lineList)
elif command == "f":
lineList = findReplace(lineList)

TA貢獻1842條經驗 獲得超13個贊
最好讓函數將列表作為函數參數。使用全局變量通常是不好的做法,您應該盡可能避免使用它們。這樣,您的功能就可以是自包含和獨立的,這是一個很好的設計特征。所以,只是把它變成一個論點。
此外,以下代碼塊在您的每個功能中都是多余的。如果你也把它封裝在一個函數中會更好。
for (i, item) in enumerate(lineList, start=1):
print(str(i)+":", item)
例如:
def print_lines(line_list):
for (i, item) in enumerate(lineList, start=1):
print(str(i)+":", item)
這樣,您不必每次都擔心 for 循環,而只需print_lines(line_list)在您的函數中使用即可。
提示:查看PEP-8 風格指南。此 PEP 將讓您深入了解應如何設置代碼樣式。
希望答案有所幫助:)

TA貢獻1831條經驗 獲得超10個贊
據我了解你正在嘗試做什么你需要在函數之外有 linelist 變量所以它是一個全局變量然后你可以從任何地方甚至在函數內部訪問它。如果您在函數 add 中聲明該變量,您將需要在 add 函數的開頭添加:
def addLine ():
global linelist
linelist = []
while lines != "#":
lines = input ("Add a line: ")
lineList.append(lines)
for (i, item) in enumerate(lineList, start=1):
print(str(i)+":", item)
這樣變量也是全局的,但在函數外部使用它更容易。
希望這有幫助:D
添加回答
舉報