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条经验 获得超12个赞
最好让函数将列表作为函数参数。使用全局变量通常是不好的做法,您应该尽可能避免使用它们。这样,您的功能就可以是自包含和独立的,这是一个很好的设计特征。所以,只是把它变成一个论点。
此外,以下代码块在您的每个功能中都是多余的。如果你也把它封装在一个函数中会更好。
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
添加回答
举报