猿问

在迭代器中使用 return

我正在编写一个代码,它将整数元组作为间隔并输出一系列字母。我可以在 return 语句上使用一些帮助。


>>> arrangement((5, 3, 11, 7))

'A-E F-H I-S T-Z'

以下是我到目前为止所写的内容。return 语句似乎只返回循环的最后一次迭代:


def arrangement(numerical_representation):

    interval = ''

    step = 65

    for integer in numerical_representation:

        interval = chr(step) + '-' + chr(step + integer - 1)

        step += integer

    return interval


>>> arrangement((5, 3, 11, 7))

'T-Z'

使用打印语句,我可以完成所有迭代,但我似乎无法将它们打印在两端都带有引号的一行中。


def arrangement(numerical_representation):

    interval = ''

    step = 65

    for integer in numerical_representation:

        interval = chr(step) + '-' + chr(step + integer - 1)

        step += integer

        print(interval)


>>> arrangement((5, 3, 11, 7))

A-E

F-H

I-S

T-Z

我应该如何进行?


万千封印
浏览 281回答 3
3回答

有只小跳蛙

像这样尝试:def arrangement(numerical_representation):    start = 65    result = []    for n in numerical_representation:        result.append('{}-{}'.format(chr(start), chr(start+n-1)))        start += n    return ' '.join(result)print(arrangement((5, 3, 11, 7)))#A-E F-H I-S T-Z

慕娘9325324

您需要使用+=代替=:def arrangement(numerical_representation):    interval = ''    step = 65    for integer in numerical_representation:        interval += chr(step) + '-' + chr(step + integer - 1)        step += integer    return interval>>> arrangement((5, 3, 7, 11))'A-EF-HI-OP-Z'另一种选择,如何使用yield?def arrangement(numerical_representation):    interval = ''    step = 65    for integer in numerical_representation:        interval = chr(step) + '-' + chr(step + integer - 1)        step += integer        yield interval>>> ''.join([x for x in arrangement((5, 3, 7, 11))])'A-EF-HI-OP-Z'

扬帆大鱼

您可以有一个列表并将每个间隔附加到它。最后返回列表def arrangement(numerical_representation):    interval = ''    step = 65    l=[]    for integer in numerical_representation:        interval = chr(step) + '-' + chr(step + integer - 1)        step += integer        l.append(interval)    return " ".join(l)arrangement((5, 3, 11, 7))A-E F-H I-S T-Z
随时随地看视频慕课网APP

相关分类

Python
我要回答