如何返回与python字符串中的print相同

时间:2016-09-05 16:40:52

标签: python

b = 'abbaab'
count = 0
width = 2
for k in range(0, len(b), width):
    print b[k:k + width]

给了我

 ab
 ba
 ab

但我需要使用return而不是print。我不知道如何将每一行存储成某些东西,我试过的东西指数超出范围。

3 个答案:

答案 0 :(得分:1)

我认为这样可行,Python 2.7.6中的解决方案:

def print_list(b):
    count = 0
    width = 2
    for k in range(0, len(b), width):
        yield b[k:k + width]
b = 'abbaab'
l = list(print_list(b))
for i in l:
    print i 

<强>输出

ab
ba
ab

这里我使用yield语句而不是return来返回每一行元素并尝试将所有元素转换为list,列表中的每个元素代表每一行或者它是没有必要将它转换为list你可以使用它:

 for i in print_list(b):
    print i 

如果您想使用return,请使用解决方案:

def print_list(b):
count = 0
width = 2
ans = []
for k in range(0, len(b), width):
    ans.append(b[k:k + width])
return ans

b = 'abbaab'
for i in print_list(b):
    print i

希望这有帮助。

答案 1 :(得分:0)

printreturn非常不同。

打印是一种只能在屏幕上打印出来的功能。 return是一个基本上告诉函数应该返回什么值的命令。例如:

def func1():
    print 1

def func2()
    return 2

如果你这样做

first_result = func1()
second_result = func2()

你会看到

first_result = None
second_result = 2

但如果你运行它们

func1()
func2()

您将看到只有1将被打印到屏幕上。为了打印函数的返回,你必须明确地要求它

print func2()

考虑到这一点,并找到你的问题,你可以存储你的东西并将其返回到函数,然后请求python打印出所有内容

def func3():
    b = 'abbaab'
    count = 0
    width = 2
    things = []
    for k in range(0, len(b), width):
        things.append(b[k:k + width])
    return things

print func3()

当然在这个csae中,您将一次打印所有值。为了分别打印每一行,迭代结果并打印每个元素

value_returned = func3()
for element in value_returned:
    print element

答案 2 :(得分:0)

您希望returnprint相同,return将上下文从callee切换为caller函数,但有些值或无。 而print用于将一些输出发送到console

它们都不能相同。

在您的情况下,假设您要将此代码段作为函数编写并返回正在打印的值,则应按如下方式执行:

def foo():
    b = 'abbaab'
    stack = []
    count = 0
    width = 2
    for k in range(0, len(b), width):
        stack.append(b[k:k + width]);
    return stack;