初学者调试功能

时间:2013-04-27 05:55:42

标签: python function debugging

嗨,我正在使用codeacademy进行python的在线教程,我已经创建了一个功能性pyg拉丁语翻译器,它使用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行,in     pyglatin(蚂蚁) NameError:name' ant'未定义

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

2 个答案:

答案 0 :(得分:2)

  

文件“”,第1行,在pyglatin(ant)NameError:名称'ant'未定义

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

pyglatin('ant')

在Python中有many more ways来表示文字字符串,但这是最简单和最明显的。

答案 1 :(得分:0)

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

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

hello()

输出:在这种情况下没有输出,因为你没有提供任何measn来引用hello()的返回值。但是,如果你要做以下事情:

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

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

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