Exception-Handler, um zu überprüfen, ob Inline-Skript für Variable funktioniert

Ich muss eine Ausnahmebehandlung hinzufügen, die berücksichtigt, wenn Zeile 7 ausfällt, da es keinen Schnitt zwischen den Abfrage- und Array-Marken gibt. Ich bin neu, um Exception Handler zu verwenden und würde jeden Rat oder Lösungen schätzen.

Ich habe eine Beispielstruktur für die Ausnahmebehandlung geschrieben, aber ich bin nicht sicher, ob es funktionieren wird.

  • Numpy: Ersetzen Sie jeden Wert im Array mit dem Mittelwert seiner angrenzenden Elemente
  • Python, wie man Daten in einem in einer Liste gespeicherten namedtuple bearbeiten kann?
  • Finden Sie die Zeilenindizes von mehreren Werten in einem numpy Array
  • Input und Ausgabe numpy Arrays zu h5py
  • Vectorizing Äußere Schleife der euklidischen Distanz mit numpy auf multidimensionalen Daten
  • Besseres Runden in Pythons NumPy.around: Rundung von NumPy Arrays
  • brands = ["apple", "android", "windows"] query = input("Enter your query: ").lower() brand = brandSelector(query) print(brand) def brandSelector(query): try: brand = set(brands).intersection(query.split()) brand = ', '.join(brand) return brand except ValueError: print("Brand does not exist") # Redirect to main script to enter correct brand in query 

    2 Solutions collect form web for “Exception-Handler, um zu überprüfen, ob Inline-Skript für Variable funktioniert”

    Dies ist nicht der beste Weg, es zu tun, aber es ist ein Weg.

     def brandSelector(query): try: brand = set(brands).intersection(query.split()) brand = ', '.join(brand) return brand except ValueError: print("Brand does not exist") query = input("Enter your query: ").lower() brandSelector(query) brands = ["apple", "android", "windows"] query = input("Enter your query: ").lower() brand = brandSelector(query) print(brand) 

    Ihre Funktion ist jetzt rekursiv, da sie einen Anruf an sich beinhaltet. Was passiert ist, dass, wenn der try einen Fehler auslöst, wird der Auslöser ausgelöst, wo der Benutzer aufgefordert wird, die Abfrage neu zu definieren. Die Funktion wird dann umgeleitet.


    Wenn kein Fehler durch die intersection() geworfen wird intersection() sondern stattdessen ein leerer Container zurückgegeben wird, können Sie Folgendes tun:

     def brandSelector(query): brand = set(brands).intersection(query.split()) brand = ', '.join(brand) return brand brands = ["apple", "android", "windows"] brand = None while not brand: query = input("Enter your query: ").lower() brand = brandSelector(query) print(brand) 

    Das sieht so aus wie die Antwort von Tuan333 .

    Wenn Sie die Eingabe vom Benutzer abfragen, besonders wenn Sie erwarten, dass der Benutzer fehlerhafte Daten eingibt, neige ich dazu, die Abfragefunktion in eine Endlosschleife zu stellen und auszubrechen, wenn Eingabedaten sinnvoll sind. Als ev. Kounis weist darauf hin, es gibt viele Möglichkeiten, dies zu tun. Hier ist ein Weg, den ich tun würde (ungetesteter Code):

     brands = ["apple", "android", "windows"] def brandSelector(query): try: brand = set(brands).intersection(query.split()) brand = ', '.join(brand) return brand except ValueError: print("Brand does not exist") return None; brand = None; while brand is None: query = input("Enter your query: ").lower() brand = brandSelector(query) print(brand) 

    Also die Bedingung, wo man aus der while Schleife ausbrechen kann, wenn die Eingabe sinnvoll ist.

    Python ist die beste Programmiersprache der Welt.