2016-05-09 19 views
1

Ich bin nicht sicher, wie man den Fragetitel buchstabiert.Suche nach einer gleichen Zeichenfolge?

a = "Alpha"; 
b = "Bravo"; 
c = "Charlie"; 

fn = input("What is your first name: ") 

for fletter in fn.split(): 
    fl = fletter[0] 

Der obige Code wird den ersten Buchstaben eingegeben. Das Ziel ist dann, den ersten Buchstaben zu einer möglichen Überprüfung in einer while-Schleife zu bringen, um zu sehen, ob der Wert von fl = einer der Startstrings ist. Ist das möglich? Tipps, wo Sie anfangen sollen?

+0

Meinst du die Zeichenfolge mit dem Variablennamen zu vergleichen? – Jerrybibo

+0

Genau @Jerrybibo – Gramms

+0

Ich habe eine Antwort gepostet. @Gramms – Jerrybibo

Antwort

1

Lösung 1 [Mit einem Wörterbuch]

macht auch Dinge viel einfacher.

In diesem Fall speichern Sie die Variablen nicht für jede Zeichenfolge einzeln, sondern in einem Wörterbuch. So zum Beispiel, statt dies:

a = "Alpha" 
b = "Bravo" 
c = "Charlie" 

Sie hätte dies:

letterwords = {"a":"Alpha", "b":"Bravo", "c":"Charlie"} 

Das funktioniert sehr ähnlich wie eine Liste, aber statt Indizierung das Wörterbuch, das Sie separate Objekte innerhalb verweisen würde ein Wörterbuch gemäß seiner Schlüssel. Wenn also das Wörterbuch letterwords wie oben definiert ist, würden Sie auf die Zeichenfolge Alpha verweisen, indem Sie letterwords["a"] aufrufen. Daher wird in diesem Fall würde der Code wie folgt aussehen:

letterwords = {"a":"Alpha", "b":"Bravo", "c":"Charlie"} 
fn = input("Please enter your first name: ") 
try: 
    letterwords[fn[0]] 
except KeyError: 
    print("There is no matching variable with that letter in the database.") 

Lösung 2 [Mit der Funktion eval()]

Nicht empfohlen.

Dies ist perfekt möglich, mit der Eval-Funktion. Sie sollten sich jedoch bewusst sein, dass dies eine ziemlich gefährliche Funktion ist, da böswillige Benutzer dies zur Steuerung der Konsole verwenden können. (Vor allem, wenn Sie os importiert.) Allerdings sollte es Sie über den Buckel für den Moment bringen. Hier ist der Code:

a = "Alpha" 
b = "Bravo" 
c = "Charlie" 
fl = input("Please enter your first name: ") 
try: 
    compared = eval(fl[0]) 
except NameError: 
    print("Your first name's first letter does not match any strings in the database.") 

Mehr Informationen über die Funktion eval() hier: https://docs.python.org/3/library/functions.html#eval

Hope this geholfen!

+0

mmm, ich denke, du meinst 'eval (fl [0])' – Copperfield

+0

Oh yeah. @Copperfield Repariere jetzt die Antwort. – Jerrybibo

+0

so verwendet, gibt es kein Risiko in Eval, denn soweit kann ich jetzt niemand mit nur einem Charakter hacken, immer noch das Wörterbuch ist das bessere – Copperfield

Verwandte Themen