【问题标题】:Return a list that's already been named in python 3.3返回已在 python 3.3 中命名的列表
【发布时间】:2015-02-12 03:58:07
【问题描述】:

我试图从一个函数返回一些东西,但我不断收到一个错误,说 scoreDict 没有定义,那么代码应该解释我正在尝试做什么..

names = ['joe','tom','barb','sue','sally']
scores = [10,23,13,18,12]

def makeDictionary(names, scores):
    scoreDict = dict(zip(names, scores))
    return scoreDict

print(scoreDict)

提前致谢!

【问题讨论】:

  • 我知道我做错了什么,但我不知道该怎么做!我在谷歌搜索了一下,但找不到我需要的。
  • 为了澄清,我试图做 print(makeDictionary(names, scores)).. 这让我得到了需要的结果,但是如果我想修改 scoreDict 那就不能用那个权利?比如,假设我想返回 Barb 和她的分数。或者我想将某人的分数添加到列表中……等等。

标签: python list return


【解决方案1】:

您需要调用该函数,否则它的主体永远不会执行!

此外,您需要分配它的结果——它不会隐式完成。

所以,添加

scoreDict = makeDictionary(names, scores)

在尝试print 之前说scoreDict(或用它做任何其他事情:-)。

【讨论】:

  • 我这样做时的问题是..我必须做 print(makeDictionary(names, scores)).. 这让我得到了需要的结果,但是如果我想修改 scoreDict 那会不行吗?比如,假设我想返回 Barb 和她的分数。或者我想将某人的分数添加到列表中……等等。
  • 即使你是绝对正确的,这种用法很容易让他感到困惑。看起来他对编程很陌生,我认为更好的方法是解释函数范围。 :)
  • @Fadi,不!将调用makeDictionary 的结果分配scoreDict,就像我展示的那样!然后你可以打印它,修改它,以任何你想要的方式使用它。您只需要 call 函数,assign 就是结果,exactly 正如我所说:请重新阅读我的答案,时间不长,并仔细遵循!
  • @ozgurv 祝你好运,向“对编程非常陌生”的人解释深层理论,而不是直接解决他们的实际问题。实际上让我嫁给了世界上最棒的女人,她只是向我寻求在 Python 中使用 somelist.append 的实际帮助——而现在,15 年后,一本 Python 书籍的畅销书合著者,并且是唯一一位因对 Python 社区做出贡献而获得 Frank Willison 奖的女性——但是,我非常幸运,而且,无论如何,我不打算再次结婚:-)跨度>
  • 如果提问者是女性,我肯定会尝试。
【解决方案2】:

你没有调用函数,所以变量scoreDict没有定义在当前作用域中:

names = ['joe','tom','barb','sue','sally']
scores = [10,23,13,18,12]

def makeDictionary(names, scores):
    scoreDict = dict(zip(names, scores))
    return scoreDict

scoreDict = makeDictionary(names, scores)
print(scoreDict)

【讨论】:

    【解决方案3】:

    就像 Alex Martelli 所说,您必须调用该函数。解决此问题的一个示例是将print(scoreDict) 行替换为print(makeDictionary(names, scores))

    【讨论】:

      猜你喜欢
      • 2014-04-12
      • 2015-10-07
      • 2021-03-22
      • 2012-10-26
      • 1970-01-01
      • 2015-01-09
      相关资源
      最近更新 更多