Python &引用;Return";外部功能

Python &引用;Return";外部功能,python,python-3.x,Python,Python 3.x,我知道这个问题很难回答,但我的程序一直告诉我“Return”是外部函数 因此,它应该做的是,如果用户按下“回车”,它应该停止。否则,它应该继续询问并解析输入 我想知道我在“我想要一个新的函数测试\u pig()中是怎么做的,它应该在输入中输入以下文字:快乐,鸭子,手套,邪恶,八,大声,水晶 sentence = input("Please enter a sentence: ") if sentence==[]: return vowels = ("a", "e", "i", "

我知道这个问题很难回答,但我的程序一直告诉我“Return”是外部函数

因此,它应该做的是,如果用户按下“回车”,它应该停止。否则,它应该继续询问并解析输入

我想知道我在“我想要一个新的
函数测试\u pig()
中是怎么做的,它应该在输入中输入以下文字:
快乐,鸭子,手套,邪恶,八,大声,水晶

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='')

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

但通常您会将“主代码”放在脚本的末尾,这意味着您通常不需要退出。例如,下面的一些代码将不断请求输入并在其上调用
pig
,直到用户点击enter:

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
中断
将退出循环,循环后没有代码,因此脚本将成功完成

您的代码还有其他问题,但这会让您克服第一个问题



作为旁注,我之所以将您的
if-句子==[]
更改为
if-not-句子
,是因为
句子
是一个字符串,任何字符串都不等于空列表。你可以检查一个空字符串,比如
如果句子==''
。但是用
not

检查空值更简单,也更符合python,这是您的实际缩进吗?是的,这是我的实际缩进在代码中为每个缩进级别使用一致的缩进-4空格,而不是有时4空格,有时一个制表符,有时4空格和一个制表符。有时候,你会侥幸逃脱,而且不会造成问题,但你绝对不应该指望它,因为当它真的导致问题时(我认为5:1的概率是你尝试我的答案时发生的概率),不可能知道原因。大多数编辑器都可以配置为即使在按tab键时也始终插入空格。然后使用
-tt
标志运行Python(比如
Python-tt myscript.py
而不是
Python myscript.py
)来捕获问题这只打印输入,直到我按Enter键,所以它不会打印结果input@user3026270:如果您完全按照我上面所说的,复制并粘贴注释指示的代码,然后运行它,它肯定会打印输入的结果。你可以看到它这样做。显然你做错了什么,但是如果你不给我看你的代码,我就不能告诉你你做错了什么。@user3026270:如果你想让我猜,我怀疑你使用了制表符和空格的混合(就像你在原来的帖子中所做的那样),因此
if
就Python而言,完全超出了
循环,即使它看起来像是在任何人类读者的
for
循环中。所以,它读取你的输入,过滤每个单词,然后永远重复……然后,直到永远结束后,它才会打印结果。