2017-11-12 8 views
1

Intro: Ich habe fortgesetzt, ein Lehrbuch über die Programmierung (Python, speziell) zu folgen, mit dem neuesten "Problem" zu lösen, die Schaffung eines 'Phone Number Look-up'.Wie man eine Suchfunktion insensitiv macht | Python

Die Kürze: Das Lehrbuch der Benutzer auffordert, zwei parallele Reihen (7 Freund Namen & Telefonnummern) und eine Suchfunktion zu erstellen, die die Menschen Array Schritte durch und gibt sowohl dieses Suchergebnis (basierend auf Benutzereingaben) von der Freund (e) Name (n) und die entsprechende Telefonnummer. (Anmerkung: Namen und entsprechenden Telefonnummern unter Verwendung identischer Indexpositionen werden

das Problem: ich habe def ein arraysAndSearch Modul (das hat meine people und phoneNumbersarray) und verwendet enumerate() für die einfache Schleife ov er die people Array und inc. ein automatischer Zähler. Das Programm funktioniert, da es vollständige und teilweise Übereinstimmungen sowohl der Person als auch der entsprechenden Index-ID im phoneNumbers Array zurückgibt, jedoch I hatteProbleme, die versuchen, meinen Code anzupassen, so dass Fall in-sensitivity beobachtet wird.

z. Suche nach 'Katie' gibt die zwei erwarteten Werte aus dem Array people und die entsprechende Index-ID aus phoneNumbers zurück. Die Suche nach 'Katie' gibt keine Ergebnisse zurück, ich bekomme einfach meine Fehlermeldung, die so codiert ist, dass sie if not arraySearch: erscheint.

-Code Extract:

def arraysAndSearch(nameSearch): 
    people = ['Silviu Ciocanel', 'Katie Trolan', 'Katie MacPherson'] 
    phoneNumbers = ['310-443-7798', '562-905-3343', '310-983-5209'] 
    arraySearch = [people for people in enumerate(people) if nameSearch in people[1]] 
    for index, nameSearch in arraySearch: 
     print("Name: ", nameSearch, "\nPhone:", phoneNumbers[index]) 
    if not arraySearch: 
     print("No matches in phone book :(") 
    print("****************************") 

Ist jemand in der Lage einige Hinweise darüber zu geben, wie ich Fall in Empfindlichkeit integrieren können?

+1

„Das Lehrbuch fordert den Benutzer auf zwei parallele Arrays erstellen "Wow, ich hoffe es gibt mehr Kontext dazu oder es ist ein schrecklicher Ratschlag. Die Datenstruktur der Wahl sollte ein Wörterbuch sein, in dem die Schlüssel Kleinbuchstaben sind und die Werte die Telefonnummern sind. – timgeb

+0

Mögliches Duplikat von [Wie führe ich einen Vergleich der Groß-/Kleinschreibung ohne Zeichenfolgen durch?] (Https://stackoverflow.com/questions/319426/how-do-i-do-a-case-insensitive-string-comparison) –

Antwort

0

Eine einfache Möglichkeit, dies zu erreichen ist, um sicherzustellen, dass sowohl die Eingangs- und die Suchzeichenfolge im gleichen Fall ist (zB beide sind klein geschrieben):

arraySearch = [people for people in enumerate(people) if nameSearch.lower() in people[1].lower()] 
+1

Dies wirklich geholfen, danke. Ich habe versucht, 'lower()' jedoch nicht 'bann' es auf 'nameSearch' UND' people'. Eine Lektion, die im Detail gelernt wurde. – William

Verwandte Themen