为了账号安全,请及时绑定邮箱和手机立即绑定

在迭代器中使用 return

在迭代器中使用 return

万千封印 2021-07-22 18:20:51
我正在编写一个代码,它将整数元组作为间隔并输出一系列字母。我可以在 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-EF-HI-ST-Z我应该如何进行?
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

像这样尝试:


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


查看完整回答
反对 回复 2021-07-28
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您需要使用+=代替=:


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'


查看完整回答
反对 回复 2021-07-28
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您可以有一个列表并将每个间隔附加到它。最后返回列表


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


查看完整回答
反对 回复 2021-07-28
  • 3 回答
  • 0 关注
  • 280 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号