0

嗨,我正在 codeacademy 上为 python 做一个在线教程,我已经创建了一个功能性 pyg latin 翻译器,它使用 raw_input 并将其转换为 pyglatin 中的一个单词,但是,当我尝试把这个翻译器变成一个接受一个单词的函数时返回 pyg latin 中的一个单词我得到一个错误。这些工作方式有根本的区别吗?

这是功能翻译器:

original = raw_input("Enter a word in English to translate to Pyg Latin:")

vowels = ["a", "e", "i", "o", "u"]

if len(original) > 0 and original.isalpha():
    word = original.lower() 
    if word[0] in vowels:
        translation = word + "ay"
        print translation
    else:
        translation = word[1:] + word[0] + "ay"
        print translation
else:
    print "This is not a valid entry! Please try again."

# Here is the function that comes up with an error:

vowels = ["a", "e", "i", "o", "u"]

def pyglatin(eng):
    if eng.isalpha() and len(eng) > 0:
        word = eng.lower()
        if word[0] in vowels:
            return word + "ay"
        else:
            return word[1:] + word[0] + "ay"
    else:
        return False

例如,当我尝试调用该函数并键入 pyglatin(ant) 以查看 ant 一词的翻译时,我收到此错误:

回溯(最近一次通话最后):

文件“”,第 1 行,在 pyglatin(ant) NameError: name 'ant' is not defined

请注意,所有缩进都是正确的,但我可能没有在这里显示正确的间距。我真的只是想知道我的逻辑是否存在根本问题。谢谢!!!

4

2 回答 2

2

文件“”,第 1 行,在 pyglatin(ant) NameError: name 'ant' is not defined

pyglatin(ant)ant意味着在未定义的变量上运行它。要传入文字字符串,请使用引号:

pyglatin('ant')

在 Python 中表示文字字符串的方法还有很多,但这是最简单和最明显的。

于 2013-04-28T18:36:23.193 回答
0

很难知道,不知道你得到了什么错误。虽然也许:问题可能是在你的程序的全局范围内你没有分配return ...任何东西吗?我这是什么意思?一个例子:

def hello():
    return 'Hello, world!'

hello()

输出:在这种情况下没有任何输出,因为您没有提供任何方法来引用hello(). 但是,如果您要执行以下操作:

print(hello())
--> Hello, world!

greeting = hello()
print(greeting)
--> Hello, world!

第一个示例,从 打印 return 语句hello(),第二个示例将返回值分配给一个变量,为您提供再次引用它的方法。

于 2013-04-27T06:59:16.027 回答