您的代码有几个问题,所有问题都可以通过更多的知识来解决.
>不要将名称列表用于您自己的变量或函数.它是内置Python函数的名称,如果您将该名称用于自己的函数,则无法调用内置函数. (至少,不是没有采用你不应该学习的高级技巧.)
>你也在为两个不同的东西,一个变量和一个函数重复使用相同的名称(列表).不要那样做;给他们不同的,有意义的名字,反映他们是什么.例如,包含单词列表的变量的wordlist,以及函数的get_words().
>不是使用名为list的变量来累积一组字符串,而是实际上不是Python列表,为什么不使用真正的Python列表呢?它们的设计完全符合您的要求.
你使用这样的Python列表:
wordlist = []
# To add words at the end of the list:
wordlist.append("hello")
# To print the list in format ["word", "word 2", "word 3"]:
print wordlist
# To put a single space between each item of the list, then print it:
print " ".join(wordlist)
# To put a comma-and-space between each item of the list, then print it:
print ", ".join(wordlist)
不要过分担心join()函数,以及为什么分隔符(列表项之间的字符串)出现在join()之前.这将进入类,实例和方法,您将在稍后学习.现在,请专注于正确使用列表.
此外,如果您正确使用列表,如果list ==“none”检查您正在执行此操作,则无需执行此操作,因为您可以将()附加到空列表以及包含内容的列表中.所以你的代码将成为:
例A
wordlist = []
def translate_this(word):
# Define this however you like
return word
def get_words():
word = raw_input("")
translated_word = translate_this(word)
wordlist.append(translated_word)
print " ".join(wordlist)
# Or: print ", ".join(wordlist)
get_words()
get_words()
现在还有一个我建议做的改变.不要每次都在最后调用你的函数,而是使用while循环. while循环的条件可以是你喜欢的任何东西;特别是,如果你使条件成为Python值True,那么循环将永远不会退出并永远循环,如下所示:
例B
wordlist = []
def translate_this(word):
# Define this however you like
return word
def get_words():
while True:
word = raw_input("")
translated_word = translate_this(word)
wordlist.append(translated_word)
print " ".join(wordlist)
# Or: print ", ".join(wordlist)
get_words()
最后,如果你想提前退出循环(任何循环,而不仅仅是无限循环),你可以使用break语句:
例C
wordlist = []
def translate_this(word):
# Define this however you like
return word
def get_words():
while True:
word = raw_input("")
if word == "quit":
break
translated_word = translate_this(word)
wordlist.append(translated_word)
print " ".join(wordlist)
# Or: print ", ".join(wordlist)
get_words()
到目前为止,这应该解决你的大部分问题.如果您对此代码的工作方式有任何疑问,请与我们联系.