请用此函数完成任务,给出测试代码,以让我通过系统测试
时间: 2024-09-27 21:14:34 浏览: 24
假设我们已经有了名为`collatz_sequence`的函数,用于生成Collatz序列直到达到1,我们可以编写一些测试代码来确保函数的正确性。这是一个简单的测试框架:
```python
def collatz_sequence(n):
# 原始的 Collatz 函数实现
steps = []
while n != 1:
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
steps.append(n)
steps.append(1) # 包含1在结果中
return steps
# 测试用例
test_cases = [
(33, ['33', '100', '50', '25', '76', '38', '19', '58', '29', '88', '44', '22', '11', '34', '17', '52', '26', '13', '40', '20', '10', '5', '16', '8', '4', '2', '1'], 26),
(1, ['1'], 1), # 验证1本身就是Collatz序列
(-1, "ERROR", -1), # 非正整数应该返回错误信息
(0, "ERROR", -1), # 同理,0也是无效输入
]
for input_n, expected_output, expected_steps_count in test_cases:
result = collatz_sequence(input_n)
if result == expected_output:
print(f"Test passed for {input_n}: {result} (Steps: {len(result)-1})")
else:
print(f"Test failed for {input_n}: Expected {expected_output}, got {result}")
assert len(result) == expected_steps_count, f"Expected steps count: {expected_steps_count}, got {len(result)}"
```
这段代码定义了一个包含几个测试用例的列表,每个用例都有输入值、预期输出和预期的步数。接着,对每个用例调用`collatz_sequence`函数,比较实际输出与预期结果,同时验证步数计数。如果有任一用例失败,就会抛出异常。如果你的函数实现了Collatz序列的正确逻辑,那么这些测试应该都能顺利通过。
阅读全文