列为Python 2.7中的参数

时间:2017-12-25 16:59:30

标签: python python-2.7 function return arguments

我很困惑为什么以下代码不起作用。我的困惑在于回报和印刷品。我不知道如何将列表作为参数。其他一切似乎都很好,直到那一部分。

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)

2 个答案:

答案 0 :(得分:2)

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

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

apd仅在stats函数内定义,因此如果您想在外部使用它,请在运行函数之前定义它或返回它。

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

while_mean(apd)

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

答案 1 :(得分: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)

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

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

使用此解决方案,您可以在输入数字后输入nume以放入列表中。

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