2013-11-27 77 views
0

我知道这个问题很不明显,但我的程序一直告诉我“返回”外部函数。“返回”外部函数

所以它应该做的是如果用户按下“Enter”它应该停止。否则,它应该继续询问并解决输入。

我想知道我该怎么做像我想要一个新的function test_pig()应该把输入的话:happy, duck, glove, evil,eight,yowler,crystal

sentence = input("Please enter a sentence: ") 
if sentence==[]: 
     return 
vowels = ("a", "e", "i", "o", "u", "y", "A", "E", "I", "O", "U", "Y") 
words = sentence.split() 

def pig(word): 
    for u in range(len(word)): 
     if word[u] in vowels: 
          return u 
    return -1 
for word in words: 
    vowel = pig(word) 

    if(word[0] == 'y'): 
      print(word[1:] + word[0] + "ay", ' ', end='') 
    elif(vowel == -1): 
      print(word, ' ', end='') 
    elif(vowel == 0): 
      print(word + "way", ' ', end='') 
    else: 
      print(word[vowel:] + word[:vowel] + "ay", ' ', end='') 
+0

这是您的实际缩进吗? – abarnert

+0

是的,这是我的实际缩进 – user3026270

+0

在每个缩进级别的代码4空间中使用一致的缩进,有时不是4空格,有时是制表符,有时是4空格和制表符。偶尔,你会摆脱它,它不会造成问题,但你绝对不应该指望这一点,因为当它_does_导致一个问题时(我会给你5:1的几率是当你试了我的答案)不可能知道为什么。即使您点击Tab键,大多数编辑器也可以配置为始终插入空格。并用'-tt'标志(如'python -tt myscript.py'而不是'python myscript.py')运行Python来捕捉问题 – abarnert

回答

0

如果你想退出整个程序,你需要使用exit(),而不是returnreturn语句只能在函数内部使用。这就是为什么当你在第三行上尝试时出现错误的原因。

但通常情况下,您将“主代码”放在脚本的末尾,这意味着您通常不需要exit。例如,这里的一些代码,将继续要求输入并呼吁它pig,直到用户点击进入:

vowels = # etc. 

def pig(word): 
    # your definition here 

while True: 
    sentence = input("Please enter a sentence: ") 
    if not sentence: 
     break 
    words = sentence.split() 
    for word in words: 
     # your for-loop code here 

break将退出循环,并有在循环后没有代码,所以剧本刚刚完成成功。

你的代码还有其他问题,但这会让你超过第一个。


作为一个侧面说明,我之所以改变了你的if sentence==[]if not sentencesentence是一个字符串,而没有字符串是有史以来等于一个空列表。您可以检查空的字符串,而不是像if sentence == ''。但它更简单,更pythonic,只需检查与not空虚。

+0

这只是输入输入,直到我按回车 – user3026270

+0

因此它不打印输入的结果 – user3026270

+0

@ user3026270:如果您完全按照上面所述,复制并粘贴注释中指示的代码并运行它,它肯定会打印输入的结果。你可以看到它[这里](http://ideone.com/FPlnB9)。所以显然你做错了什么,但如果你没有向我展示你的代码,我不能告诉你你做错了什么。 – abarnert

相关问题