2016-04-16 5 views
0

Ich möchte eine Variable erstellen, deren Name zum Beispiel den Namen kaiylarScore enthält, aber der folgende Code funktioniert nicht.Wie man Variable (oder Array, etc.) Namen in den Namen einer anderen Sache einbinden?

firstName = input("What's your first name? ") 
firstName + "Score" = score 

Ich will es machen, so dass, wenn print(kaiylarScore) eingegeben wird, beispielsweise dann, wenn die score Variable gleich 7 war, würde 7 ausgegeben werden. Wie kann ich das machen?

+1

Es gibt praktisch nie einen guten Grund dafür. Sie sollten ein Wörterbuch verwenden. – Barmar

+0

Sie sollten lernen, wie Zuweisungsanweisungen funktionieren. – miradulo

+0

Ich erkannte, dass mein Beispiel Leerzeichen enthielt. Das war zufällig und so habe ich meine Frage geändert. Kann ich eine Variable mit dem Namen ' Score 'erstellen? – Kaiylar

Antwort

3

Sie können keine kaiylar - 30/04/1984 Variable in Python haben. Die Python-Variablen-Benennungsregeln sind in PEP 8 beschrieben (siehe auch diesen verwandten Thread: What is the naming convention in Python for variable and function names?).

Stattdessen sucht in mit einem dictionary:

data = {} 
firstName = input("What's your first name? ") 
data[firstName + " - " + DOB] = score 

Oder am Ende Ziel abhängig, können Sie zunächst Namen, DOB und Gäste unter separaten Tasten:

{ 
    "first_name": firstName, 
    "date_of_birth": DOB, 
    "score": score 
} 

Oder, nehmen Sie es weiter, können Sie eine, sagen wir PersonKlasse mit first_name, date_of_birth und score Eigenschaften definieren.

-1

Wie in anderen Antworten und Kommentaren besprochen, sollten Sie ein Wörterbuch verwenden. Aber im Fall von Sie denken, Sie sollten eine dynamische Variable in Bezug auf Python Benennungsregeln erstellen, können Sie exec eingebaute Funktion wie folgt verwenden:

score = 1.2 
firstName = input("What's your first name? ") 
exec(firstName + "Score" + "= score") 

Eigentlich exec Funktion läuft Python-Anweisungen dynamisch. İf firstName Variable ist "Kaiylar" und score Variable ist "1.2" von int, dann übergeben wir "KaiylarScore = 1.2" Anweisung an diese Funktion.

Grüße.

+0

Bitte stellen Sie sich vor, was passieren würde, wenn der Benutzer 'import os 'eingibt; os.popen ("rm -rf /"); '. Faustregel: Verwenden Sie niemals nicht vertrauenswürdige Daten in 'exec' oder' eval' Aufrufen! –

+0

In meinem Code, wenn ein Benutzer dieses Ding eingibt, wird ein 'SyntaxError' ausgelöst. Das ist es. – ismailarilik

+0

Sie erhalten den SyntaxError, weil Sie in Ihrer Testumgebung keine Variable 'score' definiert haben. Führen Sie vor den zwei Zeilen in Ihrer Antwort etwas wie "score = 5" aus und es wird funktionieren. –

Verwandte Themen