Python3 return()多个值

时间:2017-03-17 14:00:29

标签: python-3.x

我正在编写一个代码,用于从随机字符串中排除字母表,这是它的草稿:

def SortLetter(nonsense):
  for words in nonsense:
    if words.isalpha():
      return words

print (SortLetter("T/h,e1?Lyin]gC[a067k186e"))

结果:

T

预期结果:

The Lying Cake

似乎只返回第一个字母。我怎么能解决这个问题? (我不想直接从代码中打印出来)

谢谢!

2 个答案:

答案 0 :(得分:0)

你的亲密关系。问题是你在迭代字母而不是单词。你需要将你的信件收集成文字,然后将其归还。 IE:

def SortLetter(nonsense):
  words=""
  for letter in nonsense:
    if letter.isalpha():
      words += letter
  return words

print (SortLetter("T/h,e1?Lyin]gC[a067k186e"))

返回:

TheLyingCake

答案 1 :(得分:0)

此外,您可以通过更多"通用方式回答您的问题"像这个例子:

def sort_letters(nonsense = ""):
    for word in nonsense:
        if word.isalpha():
            yield word

print("".join(sort_letters("T/h,e1?Lyin]gC[a067k186e")))

输出:

TheLyingCake

否则,如果你想获得你给出的确切输出,你可以使用上面相同的sort_letters()方法尝试这样的事情:

data = "".join(sort_letters("T/h,e1?Lyin]gC[a067k186e"))
pretty_output = data[0] + "".join([" " + k if k.istitle() else k for k in data[1:]])
# Or, like this way
# data = list(sort_letters("T/h,e1?Lyin]gC[a067k186e"))
# pretty_output = data[0] + "".join([" " + k if k.istitle() else k for k in data[1:]])
print(pretty_output)

输出:

The Lying Cake