b = 'abbaab'
count = 0
width = 2
for k in range(0, len(b), width):
print b[k:k + width]
给了我
ab
ba
ab
但我需要使用return而不是print。我不知道如何将每一行存储成某些东西,我试过的东西指数超出范围。
答案 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)
print
和return
非常不同。
打印是一种只能在屏幕上打印出来的功能。 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)
您希望return
与print
相同,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;