Поиск строки из списка, сделанного из файла в Python 3 - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь найти имя, которое находится в двух отдельных списках, которые я создал, и мне нужно проверить функцию, чтобы увидеть, есть ли оно там.Я знаю, что он проверяет список, и я распечатал список, чтобы убедиться, что он хранится правильно, но он продолжает давать мне сообщение об ошибке, что имя не найдено в списке.Вот код, который у меня есть для этого.

def readBoyFiles():
    boyfile = 'BoyNames.txt'
    boyList = []
    with open(boyfile, 'r') as lis:
        for line in lis:
            boyList.append(line)
    return boyList

def readGirlFiles():
    girlfile = 'GirlNames.txt'
    girlList = []
    with open(girlfile, 'r') as names:
        for line in names:
            girlList.append(line)
    return girlList

def nameInput():
    name = input('Please enter the name you would like to search: ')
    list1 = readBoyFiles()
    list2 = readGirlFiles()
    findName(name, list1)
    findName(name, list2)

def findName(name, list):
    if name in list:
        print('This name is among the most popular!')
    else:
        print('This name is not among the most popular.')
nameInput()

Когда я добавляю оператор print, такой как print (list1), он дает мне имена в этом формате [Jacob \ n ', ....] и когда я проверяю его, он выводит мой оператор else независимо от того, что я ввожу для ввода.Я также попытался проверить это с помощью функции index, и мне сказали, что «Jacob» нет в списке, если я попробую это.Я чувствую, что должен что-то упустить из виду, потому что я написал похожий код, который работает должным образом, и это почти зеркальное отражение, за исключением разных типов данных.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Более питонная версия вашего кода

def load_list(file_name):
    with open(file_name, 'r') as f:
        return [name.strip() for name in f.readlines()]


def get_lists_and_user_input():
    name = raw_input('Please enter the name you would like to search: ')
    boys_list = load_list('popular_boys.txt')
    girls_list = load_list('popular_girls.txt')
    return boys_list, girls_list, name


def check_name(name, lst, _type):
    if name in lst:
        print('The name {} is a popular {} name'.format(name, _type))
    else:
        print('The name {} is NOT a popular {} name'.format(name, _type))


boys, girls, _name = get_lists_and_user_input()
check_name(_name, boys, 'boys')
check_name(_name, girls, 'girls')
0 голосов
/ 26 февраля 2019

Не забудьте убрать свои струны!Это удаляет ведущие и конечные пробелы.Технически, «Jacob» нет в списке, потому что «Jacob \ n» есть.

def readBoyFiles():
    boyfile = 'BoyNames.txt'
    boyList = []
    with open(boyfile, 'r') as lis:
        for line in lis:
            boyList.append(line.strip())
    return boyList

def readGirlFiles():
    girlfile = 'GirlNames.txt'
    girlList = []
    with open(girlfile, 'r') as names:
        for line in names:
            girlList.append(line.strip())
    return girlList
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...