【问题标题】:create a function that adds to a list创建一个添加到列表的函数
【发布时间】:2021-05-20 09:37:07
【问题描述】:

我有一个关于这样的列表的任务,

创建一个名为 myUniqueList 的全局变量。它应该是一个空列表开始。

接下来,创建一个允许您将内容添加到该列表的函数。传递给此函数的任何内容都应添加到 myUniqueList,除非其值已存在于 myUniqueList 中。如果该值不存在,则应添加该值并且该函数应返回 True。如果该值确实存在,则不应添加,该函数应返回 False;

最后,在你的函数下面添加一些代码来测试它。它应该添加一些不同的元素,展示不同的场景,最后它应该打印 myUniqueList 的值以表明它有效。

添加另一个函数,将所有被拒绝的输入推送到名为 myLeftovers 的单独全局数组中。如果有人尝试向 myUniqueList 添加值但被拒绝(因为非唯一性),则应将其添加到 myLeftovers 中。”

这是我为创建列表和向列表添加值而编写的代码,但我没有从该代码中得到我想要的输出,有人可以帮我解释我做错了什么,我该如何编写以便我的列表被填满与元素?我现在从代码中得到的输出,你可以在下面看到。

myUniqueList = []
myLeftovers = []

    def addList(newThing):
         if newThing in myUniqueList:
         myLeftovers.append(newThing)
         return False
         else:
         myUniqueList.append(newThing)
         return True

    print(myUniqueList) # []
    print(addList("Meliodas")) # returns 'True' since it's a new item
    print(addList("Escanor")) # returns 'True' since it's a new item
    print(addList("Meliodas")) # returns 'False' since it's already been added
    print(myUniqueList) # This includes the new entries
    print(myLeftovers) # This includes any repeated entries

我明白了

[]
False
False
False
[]
[]

你能解释一下为什么列表没有添加单词以及为什么我在 else 语句中出现语法错误

【问题讨论】:

  • 请更新您帖子中的代码缩进,以便我们了解发生了什么
  • 通过适当的缩进,代码可以正常工作。 ideone.com/JdfVJO
  • 旁注:作业说:添加另一个函数,将所有被拒绝的输入推送到名为 myLeftovers 的单独全局数组中您尚未创建该函数。
  • 谢谢我最后得到的一切,所以现在我的代码可以工作了:)

标签: python-3.x list function


【解决方案1】:

根据您的问题,您被要求创建一个名为 myUniqueList 的全局变量。由于 myUniqueList 是一个全局列表,如果要在函数中使用它,我们必须通过在 myUniqueList 之前添加“global”来告诉函数我们正在使用全局列表;因此您的代码如下:

myUniqueList = []
myLeftovers = []

def add(newValue):
    global myUniqueList
    if newValue in myUniqueList:
        addToLeftovers(newValue)
        return False
    else:
          myUniqueList.append(newValue)
          return True

def addToLeftovers(newValue):
    myLeftovers.append(newValue)


# Testing the code:

print(add("Hello"))
print (myUniqueList)

print(add("Hello"))
print(myUniqueList)

print(myLeftovers)

您的结果如下:

True
['Hello']
False
['Hello']
['Hello']

第一个“Hello”结果为 TRUE,而第二个“Hello”结果为 FALSE。然后第三个“Hello”来自被拒绝的第二个 hello,现在,如您的问题所述,推送到“myLeftovers”。

【讨论】:

    猜你喜欢
    • 2019-04-30
    • 2021-04-13
    • 2015-06-19
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多