我需要使用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()
答案 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__”是调用主函数
的更好方法