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.

  • Holen Sie sich schneidende (gemeinsame) Indizes über zwei 2D (oder 3D) numpy Arrays
  • Suche nach allen Patterns innerhalb von Pandas Dataframe
  • Filtern von Koordinatenpunkten auf der Basis der nächsten Entfernung
  • Übergeben von 3D numpy Array von Cython zu C ++
  • Python-Liste Hilfe (inkremende Zählung, Anhängen)
  • Iterating über erste d Achsen von numpy Array
  • 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.