2016-02-28 2 views
-3

я в настоящее время возникли проблемы с кодом ниже, посмотрите на него:функция Python не будет возвращать значение из списка

def readData(fileName): 
    inputFile = open(fileName, 'r') 
    yearList = [] 
    locList = [] 
    line = inputFile.readline() 
    while line != "": 
     line = line.strip() 
     year, loc = line.split("\t") 
     yearList = yearList + [year] 
     locList = locList + [loc] 
     line = inputFile.readline() 
    inputFile.close() 
    return yearList, locList 

def findLocation(yearList, locList, year): 
    location = "Not Found" 
    for i in range(len(locList)): 
     if locList[i] == year: 
      location = locList[i] 
    print(location) 

def main(): 

    fileName = input("Please enter the name of the file here:") 
    yearList, locList = readData(fileName) 
    print(yearList) 
    print(locList) 
    year = int(input("Enter the year you want the function to look for in the data:")) 
    location = findLocation(yearList, locList, year) 

Каждый раз, когда я запускаю код, он выполняет все до findLocation функция, где он не возвращает значение, но вместо этого возвращает «Не найден». Я попытался изменить цикл и попробовать индексы и все такое, но я просто не могу понять, почему он продолжает возвращать «Not Found» вместо местоположения. Может кто-нибудь мне помочь?

+0

Сравните тип переменной 'year' в readData с типом' year', который вы переходите к findLocation. Я верю, что вы будете просветлены. –

+0

Как уже упоминалось, 'yearList' представляет собой список строк, но вы конвертируете год, который вы запрашиваете для' int'. Сохраните ввод строки. – tdelaney

+0

Большое вам спасибо, большое спасибо –

ответ

1

Когда вы сделаете это:

year, loc = line.split("\t") 

Вы назначаете строку year, а затем добавить эту строку в ваш yearList.

Но тогда вы

year = int(input("Enter the year you want the function to look for in the data:")) 

и присвоить целое число к локальной переменной year. В результате вы сравниваете целое число со строкой, например. вы в конечном итоге делаете "2016"==2016 который False для каждого случая.

Чтобы исправить это, удалите функцию int() и работайте только со строками.

+0

большое вам спасибо. очень оценил это. –

Смежные вопросы