【问题标题】:List as argument in Python 2.7在 Python 2.7 中作为参数列出
【发布时间】:2018-06-06 19:41:56
【问题描述】:

我对为什么以下代码不起作用感到困惑。我的困惑在于退货和印刷品。我不知道如何将列表作为参数。在那之前,其他一切似乎都可以正常工作。

def while_mean(l):
  sum = 0
  length = float(len(l))
  index = 0 
  while index < len(l):
    sum = l[index] + sum
    index = index + 1
  return sum/length

def for_mean(l):
  sum = 0
  length = float(len(l))
  for i in l:
    sum = i + sum
    mean = sum/length
  return mean

def stats():
  apd = ([])
  nume = input("write a number:")
  while nume != 'n':
    apd.append(nume)
    print apd
    nume = input("write another number:")
  return sum(apd)
  return while_mean([apd]) 

print stats()
print while_mean([apd])

将 def stats 更改为:

def stats():
  apd = ([])
  nume = raw_input("write a number:")

  while nume != 'n':
    apd.append(float(nume))
    print apd
    nume = raw_input("write another number:")

  return sum(apd)

print apd = ([])
print stats()
print while_mean(apd)

【问题讨论】:

  • 您在哪些方面特别需要帮助?你需要帮助吗?
  • 使用l 作为标识符是不好的做法。它看起来很像1,以至于您迟早要为困难的调试问题做好准备。另外,请注意[apd] 是列表列表而不是数字列表。为什么要将apd(这已经是一个列表)包装在一个列表中?
  • 我修改了我的代码,之所以需要使用'n'而不是-1,是因为我的老师这么说:/。我的具体问题是,当我尝试将列表 apd 放入我的 while_mean() 调用的参数中时,它不会被视为变量。我说“列表作为参数”是因为我不知道使用列表作为参数是否存在问题。

标签: python python-2.7 function return arguments


【解决方案1】:
def while_mean(l):
    sum = 0
    length = float(len(l))
    index = 0 
    while index < len(l):
        sum = l[index] + sum
        index = index + 1
    return sum/length

def for_mean(l):
    sum = 0
    length = float(len(l))
    for i in l:
        sum = i + sum
        mean = sum/length
    return mean

def stats():
    nume = input("write a number:")
    while nume != -1:
        apd.append(nume)
        print apd
        nume = input("write another number:")
    return sum(apd)
    return while_mean([apd]) 

apd = ([])
print stats()
print while_mean(apd)

按照您的代码的方式,您在 stats 函数内部声明了 apd 变量,但最好在函数外部声明该变量,然后将其作为参数传递给函数,以便在函数之外维护当前列表。
如果您这样做,您还可以将apd 变量传递给while_mean 函数。

另一件事是在stats() 函数中,最好将nume 的值与-1(或您想要的任何其他数字)进行比较,而不是作为while 循环条件的字符.
这是因为在输入整数时,nume 被指定为 integer。因此,numeinteger 类型,并且因为 numeinteger 类型,所以您不能输入字符,并将字符分配给变量 nume

使用此解决方案,您将在输入完要放入列表的数字后输入-1

我已经修改了你的代码,我所做的修改在上面。我希望这会有所帮助。

【讨论】:

  • 但是我要除以 0,因为那个特定的 apd(在函数之后定义)的长度为 0,所以它不起作用
【解决方案2】:

你不能返回两次,所以只有这两个中的第一个会运行

return sum(apd)
return while_mean([apd])

apd 只在stats 函数内部定义,所以如果你想在外部使用它,请在运行函数之前定义它或返回它。

另外,如果您打算将apd 用作列表,则不要将其称为while_mean([apd]),而是

while_mean(apd)

否则你创建一个列表列表。

【讨论】:

    猜你喜欢
    • 2013-05-11
    • 2016-08-15
    • 2021-11-26
    • 2022-07-22
    • 1970-01-01
    • 2021-05-30
    • 2017-06-07
    • 2017-08-15
    • 2014-10-03
    相关资源
    最近更新 更多