我很困惑为什么以下代码不起作用。我的困惑在于回报和印刷品。我不知道如何将列表作为参数。其他一切似乎都很好,直到那一部分。
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)
答案 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
以放入列表中。
我修改了你的代码,我所做的修改就在上面。我希望这会有所帮助。