嗨,我正在使用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'未定义
请注意,所有缩进都是正确的,但我可能没有在这里显示正确的间距。我真的只想知道我的逻辑是否存在根本问题。 感谢!!!
答案 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语句,第二个示例将返回值赋给变量,为您提供再次引用它的方法。