我正试图从字符串中抓取所有其他字母,但我在打印和返回方面遇到了一些问题。为什么当我使用打印时,输出是我想要的,当我使用返回时我只得到第一个字母?
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
正如大家所指出的那样,你的函数在第一个循环中返回实例。您可以使用临时变量来存储结果并返回结果。
您可以在函数内使用以下语句:
return ''.join([ur_string[i] for i in range(0, len(ur_string), 2)])
也许你想要的是这个:
def string_bits(the_str):
x = len(the_str)
for i in range(0,x,2):
yield the_str[i]
或the_str[::2]
只采取even
位置字符
在这里,你循环遍历整个字符串并打印每个字母。当没有更多字母时,循环结束,并退出该功能。
def string_bits(str):
x = len(str)
for i in range(0,x,2):
print str[i]
def string_bits(str):
x = len(str)
for i in range(0,x,2):
return str[i]
在这里,你循环遍历整个字符串,但不是打印str[i]
而是返回它。 return
导致函数退出,因此循环不会继续执行其他字母。
希望这可以帮助!
这是因为当你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