Python 3.x Python3 return()返回多个值

Python 3.x Python3 return()返回多个值,python-3.x,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 似乎只有第一封信被退回。我怎样才能解决这个问题?(但我不想直接从代码中打印出来) 谢谢大家

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

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

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

T
预期结果:

The Lying Cake
似乎只有第一封信被退回。我怎样才能解决这个问题?(但我不想直接从代码中打印出来)


谢谢大家!

你的结束。问题是你在重复字母,而不是单词。你需要把你的信收集成文字,然后寄回。即:

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

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

TheLyingCake

你的结束。问题是你在重复字母,而不是单词。你需要把你的信收集成文字,然后寄回。即:

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

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

TheLyingCake

此外,您可以用更“通用的方式”回答您的问题,如以下示例:

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

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

TheLyingCake
The Lying Cake
否则,如果您想要得到您给出的确切输出,您可以使用上面相同的
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)
输出:

TheLyingCake
The Lying Cake

此外,您可以用更“通用的方式”回答您的问题,如以下示例:

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

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

TheLyingCake
The Lying Cake
否则,如果您想要得到您给出的确切输出,您可以使用上面相同的
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)
输出:

TheLyingCake
The Lying Cake

从解释器点击
return
语句的那一刻起,它就认为函数已完成并返回该值。此外,您也无法真正找到单词并在它们之间放置空格,因此您所能做的最好方法是substrute
yield
for
return
use
“”。join()
print
调用中,获取不带空格的输出。或者,您可以在for循环外使用一个收集器变量,并将其添加到for循环内,然后从解释器点击
return
语句时开始在末尾返回该收集器变量,它会考虑函数是否完成并返回该值。此外,您无法真正找到单词并在它们之间留出空格,因此您所能做的最好的事情是substitute
yield
for
return
use
”。join()
print
调用中,获取不带空格的输出。或者,您可以在for循环外部使用一个收集器变量,将其添加到for循环中,并在末尾返回该收集器变量。有没有理由不将
空格
逻辑放入原始生成器中
if word.isupper():在
yield word
之前产生'
,后面没有任何逻辑。这只是我在发布答案时想到的第一件事。现在,通过您的注释,您的代码比我的代码更像Python。如果你不介意的话,我可以更新我的答案,把你的代码换成我的吗?谢谢。有没有理由不将
空格
逻辑放在原始生成器中
if word.isupper():在
yield word
之前产生'
,后面没有任何逻辑。这只是我在发布答案时想到的第一件事。现在,通过您的注释,您的代码比我的代码更像Python。如果你不介意的话,我可以更新我的答案,把你的代码换成我的吗?谢谢