Python 2.7打印vs返回

时间:2018-03-02 12:11:29

标签: python python-2.7

我试图从字符串中抓取所有其他字母,但我在打印和返回方面遇到了一些问题。 为什么当我使用print时,输出是我想要的,当我使用return时我只得到第一个字母?

string_bits(Hello)  # Return string made of every other char starting with the first

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        print str[i]

output: H
        l
        o

VS

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        return str[i]

output: H

4 个答案:

答案 0 :(得分:1)

也许你想要的是这个:

def string_bits(the_str):
    x = len(the_str)
    for i in range(0,x,2):
        yield the_str[i]

the_str[::2]仅占用even位置字符

答案 1 :(得分:1)

正如大家所指出的那样,你的函数在第一个循环中返回实例。您可以使用临时变量来存储结果并返回结果。

您可以在函数中使用以下语句:

return ''.join([ur_string[i] for i in range(0, len(ur_string), 2)])

答案 2 :(得分:0)

功能1

在这里,你循环遍历整个字符串并打印每个字母。当没有更多字母时,循环结束,函数退出。

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        print str[i]

功能2

def string_bits(str):
    x = len(str)
    for i in range(0,x,2):
        return str[i]

在这里,你遍历整个字符串,但不是打印str[i]而是返回它。 return会导致函数退出,因此循环不会继续执行其他字母。

希望这有帮助!

答案 3 :(得分:0)

这是因为当你return时,程序退出函数,而使用print程序继续循环。

由于字符串是可迭代的,您可以通过将步骤指定为2来使用切片来获取所需的字符:

返回字符串:

def string_bits(s):
    return s[::2]

返回字符列表:

def string_bits(s):    
    return list(s[::2])

或者,您可以使用yield创建生成器:

def string_bits(s):
    for char in s[::2]:
        yield char