在python中,我试图做一个简单的英语句子。请帮忙:

时间:2015-01-19 00:57:58

标签: python python-2.7

我需要使用def,我正在努力使用我的代码:

def ask():
     noun_1=raw_input("Enter a noun:")
     verb=raw_input("Enter a verb:")
     adjective=raw_input("Enter a adjective:")
     noun_2=raw_input("Enter another noun:")
def main():
     ask()
     print noun_1,verb,adjective,noun_2
main()

3 个答案:

答案 0 :(得分:3)

是的,问题在于范围 - main()中不存在变量。但是,比定义全局变量更好的是返回来自ask函数的值。

def ask():
    noun_1 = raw_input("Enter a noun:")
    verb = raw_input("Enter a verb:")
    adjective = raw_input("Enter a adjective:")
    noun_2 = raw_input("Enter another noun:")
    return noun_1, verb, adjective, noun_2

def main():
    a, b, c, d = ask()
    print a, b, c, d

main()

非常少数例外情况下,避免使用全局变量是一个好主意。

答案 1 :(得分:1)

您必须了解变量范围。基本上,变量仅在ask函数中定义,而在main函数中没有访问权限。因此,您需要将它们定义为全局变量。

noun_1 = ""
noun_2 = ""
verb = ""
adjective = ""

def ask():
    global noun_1, noun_2, verb, adjective
    noun_1=raw_input("Enter a noun:")
    verb=raw_input("Enter a verb:")
    adjective=raw_input("Enter a adjective:")
    noun_2=raw_input("Enter another noun:")

def main():
    ask()
    print noun_1,verb,adjective,noun_2

main()

根据很多人的要求,您也可以在main函数中返回值:

def ask():
    noun_1=raw_input("Enter a noun:")
    verb=raw_input("Enter a verb:")
    adjective=raw_input("Enter a adjective:")
    noun_2=raw_input("Enter another noun:")
    return noun_1,verb,adjective,noun_2

def main():
    noun_1,verb,adjective,noun_2 = ask()
    print noun_1,verb,adjective,noun_2

main()

答案 2 :(得分:0)

首先,您需要了解local and global variables

之间的区别

由于noun_1,动词,形容词和noun_2是ask()的本地,你不能通过main()访问它们

更优雅:

def ask():
  noun_1=raw_input("Enter a noun:")
  verb=raw_input("Enter a verb:")
  adjective=raw_input("Enter a adjective:")
  noun_2=raw_input("Enter another noun:")
  return (noun_1,verb,adjective,noun_2)
if __name__ ==  "__main__":
  (noun_1, verb, adjective, noun_2) = ask()
  print noun_1,verb,adjective,noun_2

__ name__ ==“__ main__”是调用主函数

的更好方法