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