Python:将元组转换为字符串表示

2024-06-25 23:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个函数卷,它以电话簿分区的数字表示。如果传递给函数的参数不表示电话簿分区的有效数字表示形式,则函数将引发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

Tags: 函数newifcountassertseq形式int
1条回答
网友
1楼 · 发布于 2024-06-25 23:07:45

您可以更改代码的最后一部分,以便在最后一位为1时考虑特殊情况:

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)
    elif int(x)<2 and new == 90:
        st = st
    else:
        st = st + "-" + chr(new)

return st

相关问题 更多 >