2014-10-15 2 views
-1

Поиск помощи с программой. Задача состоит в том, чтобы переписать программу с this question. Направления - создать функцию под названием def username(first, last):. Функция username будет иметь два параметра: first и last. Результат будет таким же, как и в программе исходного текста.Python переписывает программу текстовых файлов текстовых файлов

Это то, что я до сих пор:

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 имен пользователей. Я считаю, что это проблема с углублением, но я не уверен, где она. Посредством un-indenting «return resultName», когда мой вывод был последней строкой в ​​моем текстовом файле.

+0

Ваш отступы неправильно, одна функция не использует свои параметры (и вызовет 'NameError' как вы не определили тот ему нужно) и другие печатные издания функцию, а не вызывать его и печать результатов. – jonrsharpe

+0

Почему эта функция не использует свои параметры? @jonrsharpe –

+0

Что значит «почему» *? Я не знаю почему; так вы его написали. 'username'tries присваивать содержимое' aList' ('NameError')' first' и 'last' перед тем, как делать что-либо с ними, тем самым заменяя значения, которые вы передали. – jonrsharpe

ответ

0
print(username) 

Здесь вы пропустите аргументы (первый, последний). На данный момент вы просто спрашиваете, где функция сохраняется, поэтому, когда указатель установлен на

0

Проблема с вашей программой.

  1. Вы не вызывали функцию имени пользователя. Поэтому, когда вы делаете print (username) , вы получаете адрес, в котором хранится функция.

Надеюсь, что это поможет.

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() 
Смежные вопросы