我正在写一个函数卷,它以电话簿分区的数字表示。如果传递给函数的参数不表示电话簿分区的有效数字表示形式,则函数将引发AssertionError,并显示消息invalid partitioning。否则,函数必须返回给定分区的字符串表示形式。你知道吗
我的代码仍然没有解决以下情况:
1必须引发断言错误的卷('A-D E-J K-O P-Z')
2必须引发断言错误的卷(42)
三。必须返回'A B-K L M-X Y Z'
而不是
'A B-K L M-X Y Z-Z'
我的代码就是这样
有人能帮我吗?你知道吗
def volumes(seq):
'''
>>> volumes((4, 6, 5, 11))
'A-D E-J K-O P-Z'
>>> volumes((7, 8, 1, 10))
'A-G H-O P Q-Z'
>>> volumes((4, 7, 5, 10))
'A-D E-K L-P Q-Z'
>>> volumes((8, 3, 9, 7))
Traceback (most recent call last):
AssertionError: invalid partitioning
'''
if type(seq) is tuple:
import itertools
q = list(itertools.accumulate(seq))
if type(seq) is tuple:
assert "invalid partitioning"
assert (sum(x for x in seq) == 26), "invalid partitioning"
assert q[-1] == 26, "invalid partitioning"
assert seq[-1] != 0, "invalid partitioning"
assert seq[-1] > 0, "invalid partitioning"
st = 'A'
count = 0
for x in seq:
count += int(x)
new = count + 64
if int(x) < 2 and new < 90:
st = st + " " + chr(new+1)
elif int(x) >= 2 and new < 90:
st = st + "-" + chr(new) + " " + chr(new+1)
else:
st = st + "-" + chr(new)
return st
您可以更改代码的最后一部分,以便在最后一位为1时考虑特殊情况:
相关问题 更多 >
编程相关推荐