由于某种原因,我的python列表程序不起作用


a = []
s = 0
k = 0
for i in range(20):
x = int(input())
if x<0:
s+=x
k+=1
a.append(x)
z = s/k
for i in range(20):
l = (a[i])-z
del a[i]
a.append(l)
print(a)
input()

任务是:从标准数据输入流中读取20个元素的一维列表的值。通过从列表中每个元素的值中减去列表中负元素的算术平均值来转换原始列表。源数据是-10^6到10^6之间的整数。

这不是答案,但您已经被淘汰了,因为您的代码不容易测试。你对这个问题的描述很模糊,由于你的代码有缺陷,我们不知道该怎么做。最好给出示例输入和示例输出。你应该这样做,这样我们就可以复制/粘贴并运行它。

由于这是您通常应该对代码进行的操作,因此这里有一个如何使代码可测试的示例。首先,不要在模块级别做任何事情。将算法放入函数

foo.py

import sys
def bar(input_sequence):
a = []
s = 0
k = 0
vals = iter(input_sequence)
for i in range(20):
x = next(vals)
if x<0:
s+=x
k+=1
a.append(x)
z = s/k
for i in range(20):
l = (a[i])-z
del a[i]
a.append(l)
if __name__ == "__main__":
a = foo(sys.stdin)
print(a)

现在,您可以使用已经知道所需结果的罐装输入来调用foo()。不妨把它放在python单元测试框架中,这样您就可以随着程序功能的增长轻松地添加和运行测试。

testfoo.py

import unittest
import foo
class TestFoo(unittest.TestCase):
def test_bar_1():
test_data = ['todo: fill in here']
expected_result = ['todo: fill in here']
result = foo.bar(test_data)
self.assertEqual(expected_result, result)
if __name__ == "__main__":
unitttest.main()

现在你可以进入命令提示符并键入

python testfoo.py

我们可以运行此代码,它告诉我们您希望函数做什么。在"测试优先"设计中,您应该在foo.py之前编写testfoo.py,这样您就可以在编写代码时轻松地验证代码。

相关内容

最新更新