分享
三行代码  ›  专栏  ›  技术社区  ›  programmer4132

小写函数在其他函数中不起作用

  •  1
  • programmer4132  · 技术社区  · 2 天前

    请忍受我,我是Python的新手。

    但是,当我尝试在我的第二个函数中使用它时(它应该对用户输入的任何内容使用小写函数,然后将它粘贴到一个文件中),我只剩下一个文件,其中包含最初传递的字符串,而不包含任何小写函数。

    import os.path
    from os import path
    
    
    def lowercaser(text):
        text = [ord(c) for c in text]
        length = len(text)
    
        i = 0
        while length != i:
            if 65 <= text[i] <= 90:
                text[i] = text[i] + 32
            i += 1
    
        text = [chr(c) for c in text]
        text = "".join(text)
    
    
    def does_rfid_list_exist():
        if path.exists("rfidList.txt"):
            print("File found!")
    
        else:
            print("File was not located! Creating new file.\n")
            f = open("rfidList.txt", "a+")
            user_input = input("Please enter your name!\n")
            lowercaser(user_input)
            f.write(user_input)
            f.close()
    
    
    does_rfid_list_exist()
    
    

    我不知道他们为什么不合作,我已经尽我所能把它分解了。有什么想法吗?

    4 回复  |  直到 2 天前
        1
  •  1
  •   Steve    2 天前

    你好像在等这个电话:

    lowercaser(user_input)
    

    更改的值 user_input lowercaser

    通常的做法是 小写字母 函数将返回新字符串作为函数的返回值,如下所示:

    user_input = lowercaser(user_input)
    

    这边,你指的是 对于一个新的字符串 为您制作。但要想让它发挥作用,你必须 小写字母 函数返回其结果。所以你还得加上 return text 小写字母 功能。

        2
  •  1
  •   Shadowcodder    2 天前

    您首先需要学习如何定义函数。 你可以在w3school或任何其他来源或书籍中学习它。

    return text
    

    在函数的最后一行。把

    user_input=lowercaser(user_input)
    

    而不是

    lowercaser(user_input)
    
        3
  •  0
  •   Vaebhav    2 天前

    这段代码看起来并不奇怪,我看到的唯一问题是即使你调用的是函数,你没有更新用户输入

    user_input = lowercaser(user_input)

    return text

    import os.path
    from os import path
    
    
    def lowercaser(text):
        text = [ord(c) for c in text]
        length = len(text)
    
        i = 0
        while length != i:
            if 65 <= text[i] <= 90:
                text[i] = text[i] + 32
            i += 1
    
        text = [chr(c) for c in text]
        text = "".join(text)
        return text #### Change - 1
    
    
    def does_rfid_list_exist():
        if path.exists("rfidList.txt"):
            print("File found!")
    
        else:
            print("File was not located! Creating new file.\n")
            f = open("rfidList.txt", "a+")
            user_input = input("Please enter your name!\n")
            user_input = lowercaser(user_input) #### Change - 2
            f.write(user_input)
            f.close()
    
    
    does_rfid_list_exist()
    

    使用 lower() user_input

    import os.path
    from os import path
    
    
    def lowercaser(text):
        text = [ord(c) for c in text]
        length = len(text)
    
        i = 0
        while length != i:
            if 65 <= text[i] <= 90:
                text[i] = text[i] + 32
            i += 1
    
        text = [chr(c) for c in text]
        text = "".join(text)
        return text #### Change - 1
    
    
    def does_rfid_list_exist():
        if path.exists("rfidList.txt"):
            print("File found!")
    
        else:
            print("File was not located! Creating new file.\n")
            f = open("rfidList.txt", "a+")
            user_input = input("Please enter your name!\n")
            user_input = user_input.lower() ### Change - 2
            f.write(user_input)
            f.close()
    
    
    does_rfid_list_exist()
    
        4
  •  0
  •   SwiftWada    2 天前

    Bruv,没有返回语句,即使有变量也不会存储在任何地方。这意味着文本(只能在其源函数内部访问的局部变量)不可访问、传递或存储在函数does\u rfid_list_exist()中。另一个问题是user_input(似乎是您试图操作的数据)在lowercaser()函数之后没有改变,因为没有返回任何内容,数据也没有存储在任何东西中。我要做的是

    让用户输入

    返回文本 之后 text=“”.join(文本) 并替换 具有 user_input=小写(user_input)