亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用多個 def 函數修改列表

使用多個 def 函數修改列表

慕容森 2022-11-18 16:37:48
您好,希望有人能引導我朝著正確的方向前進。我想弄清楚如何使用 def 函數根據用戶輸入修改列表中的文本行。例如,如果用戶輸入“a”,它會在列表中添加一行,“d”= 刪除行等等......我已經定義了函數并知道它們必須做什么,下面是其中的一些:lineList = []lines = ""##Add Linedef addLine ():    while lines != "#":        lines = input ("Add a line: ")        lineList.append(lines)    for (i, item) in enumerate(lineList, start=1):        print(str(i)+":", item)            ##Delete Linedef deleteLine ():    lineNum = int(input("Enter line: ")    )    del lineList[(lineNum)]    for (i, item) in enumerate(lineList, start=1):        print(str(i)+":", item)##Find and replace stringdef findReplace ():    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)所以我想弄清楚:初始列表應該在 addLine () 內部還是外部?我應該使用 addLine() 來附加列表嗎?另外,其他功能如何訪問列表以進行更改?
查看完整描述

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)


查看完整回答
反對 回復 2022-11-18
?
紅顏莎娜

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 將讓您深入了解應如何設置代碼樣式。


希望答案有所幫助:)


查看完整回答
反對 回復 2022-11-18
?
慕哥6287543

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


查看完整回答
反對 回復 2022-11-18
  • 3 回答
  • 0 關注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號