在函数之间发送变量

时间:2015-12-03 05:07:41

标签: python function

可能是重复但是15分钟后我无法找到问题的答案,可能是我的编码术语很差。

我错误地传递我的论点的逻辑是什么?请不要惩罚我的选择代码本身,我不是很擅长这个,我知道。

该计划应该:

  • a)在file1中创建一组所有唯一单词并打印它们
  • b)在file2中创建一组所有唯一单词并打印它们
  • c)打印两个文件中包含的所有单词
  • d)打印文件中包含的所有唯一单词
  • e)打印file1但不包含file2
  • 中包含的所有单词
  • f)打印file2中包含的所有单词,但不打印file1
  • g)打印任一文件中包含的所有单词,但不打印 两个

项目(a)和(b)应由创建集合的函数产生;每个人都应该有一个单独的功能。 顺便说一句,它以某种方式帮助文件1:

  • "现在是所有好人来帮助他们的聚会的时候了。"

文件2是:

  • "现在是参加聚会的时候了。"

     def main():
        file1()#obtain file1 uniquness
        file2()#obtain file2 uniqueness
        print("C) Words that appear in both files: "+str(set_1&set_2)+'\n')#addd them
        print("D) Unique words that appear in either file: "+str(set_1|set_2)+'\n')
        print("E) Words that appear in file1 but not file2: "+str(set_1-set_2)+'\n')    #subtract words found in 2 from 1
        print("F) Words that appear in file2 but not file1: "+str(set_2-set_1)+'\n')
        print("G) Words that appear in either file but not both: "+str(set_1^set_2)+'\n')
    
    
    def file1():
        file_1=open('file1.txt', 'r')
        file_1=file_1.readline()
        setlist_1=file_1.split()#convert file 1
        set_1=set()
        for word in setlist_1:
            word=word.lower()
            word=word.rstrip("\n")#process uniqueness
            set_1.add(word)
        print("A) Unique words in file1: "+str(set_1)+'\n')#print A
        return set_1
    
    
    def file2():
        file_2=open('file2.txt','r')
        file_2=file_2.readline()#convert file 2
        setlist_2=file_2.split()
        set_2=set()
        for words in setlist_2:
            words=words.lower()#process uniqueness
            words=words.rstrip("\n")
            set_2.add(words)
        print("B) Unique words in file2: "+str(set_2)+'\n')#print B
        return set_2
    
    main()
    

1 个答案:

答案 0 :(得分:2)

您在file1file2函数中使用的变量对于其他函数是不可见的,因此它们可以使用相同的名称用于略微不同的目的而不会相互干扰。这意味着您的main函数无法从这些函数中看到set_1set_2。好消息是你已经发生了将这些对象交还给调用函数的方法:使用return。你正好在这两个函数中使用它,你只需要在main中将它链接起来 - 函数调用就会计算出函数返回的值,所以要让它工作,你只需要这样做:

set_1 = file1()
set_2 = file2()

您可以随意调用这两个变量 - 它们不需要与函数内return变量的名称相匹配。