Python重写数据文本文件成绩计划

时间:2014-10-15 08:08:05

标签: python function text-files

搜索程序的帮助。任务是从this question重写程序。 方向是创建一个名为def username(first, last):的函数。函数username将包含两个参数firstlast。输出将与原始文本文件成绩程序相同。

这是我到目前为止所做的:

def username(first, last):

    for lines in aList:
        n = lines.split()
        first = n[0][0].lower()
        last = n[1][0:4].lower()
        resultName = first + last + "001"

    return resultName

def main():

    inFile = open("grades.txt", "r")
    aList = inFile.readlines()

    print(username)

    inFile.close

main()

我收到的输出:

function username at 0x7f68f83a5158

我应该收到的输出:

>>>username('Jane', 'Smith')

jsmit001

对于我能做些什么来使这个程序正确运行的任何见解将不胜感激。

我玩这个程序并发现:

def username(first, last):

    inFile = open("grades.txt", "r")
    aList = inFile.readlines()

    for lines in aList:
        n = lines.split()
        first = n[0][0].lower()
        last = n[1][0:4].lower()
        resultName = first + last + "001"

        return resultName

    infile.close

def main():

    print(username(first = "Jane", last = "Smith"))


main()

它现在有效,但只给我文本文件的第一行。输出是正确的,但我需要所有5个用户名。我相信这是某个地方的缩进问题,但我不确定它在哪里。通过取消缩进"返回resultName"一旦我的输出是我的文本文件中的最后一行。

2 个答案:

答案 0 :(得分:0)

print(username)

这里你错过了论点(第一个,最后一个)。目前你只是询问保存函数的位置,所以指针设置为

的位置

答案 1 :(得分:0)

您的计划存在问题。

  1. 您尚未调用用户名功能。所以,当你这样做 打印(用户名) 你得到的输出是存储函数的地址。
  2. 希望它有所帮助。

    def username(first, last):
      for lines in aList:
        n = lines.split()
        first = n[0][0].lower()
        last = n[1][0:4].lower()
        resultName = first + last + "001"
    
     return resultName
    
    def main():
    
      inFile = open("grades.txt", "r")
      aList = inFile.readlines()
      #first  == aList[0]
      #last = aList[1] #Something like this I expect
      print(username) ##Pass the values to the function which will return you the value "resultName" which you want to print 
    
      inFile.close()
    
    main()