2016-06-09 14 views
0

Ich bin relativ unerfahren und komme aus C#. Ich versuche, einen String zu durchlaufen und jeden einzelnen Buchstaben mit Hilfe einer for-Schleife auszudrucken.Wie man richtig durch eine For-Schleife mit Python iterieren

In C# würde dies (wenn ich mich richtig erinnere) wie so geschrieben werden:

string x = test; 
foreach(i in x) 
{ 
    print(x[i]); 
} 

Aber in Python, wenn ich

x = "test" 
    for i in x: 
    print(x[i]) 

Die Python-Shell sagt mir geben, dass ich eine sein muss ganze Zahl.

Ich bin eigentlich ziemlich sicher, dass meine Syntax in meinem C# Beispiel falsch ist, aber auf die Frage zu erhalten:

Wie würde ich eine Zeichenfolge richtig durchläuft einen für die Verwendung oder foreach-Schleife in Python?

Ich habe das Internet gesucht und komme irgendwie leer aus. Entschuldigung, wenn das eine dumme Frage ist.

+0

'für i in x' packt jedes Zeichen in' x'. Die Indizierung mit 'x [i]' funktioniert nicht, weil Sie ein Zeichen für den Index verwenden. Ändern Sie es in 'für i im Bereich (len (x))', damit es richtig funktioniert. –

+0

"In C# würde dies (wenn ich mich richtig erinnere) so geschrieben sein" - Sie erinnern sich falsch. [C# foreach geht über Elemente statt Indizes] (https://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx), genau wie Python. – user2357112

+0

@ user2357112 Ja, ich erkenne jetzt nach dem Blick auf die vorherige Praxis, die ich getan habe, danke –

Antwort

1

Ihrer Variablen x ist ein String-Typ, daher, wenn Sie x[i] geben Sie die Buchstaben an der Position i erhalten werden.

jedoch in der Schleife, Sie haben etwas anderes:

x = "test" 
for i in x: 
    print(x[i]) 

Diese for-Schleife (for i in x) bedeutet: für jeden Buchstaben i im String x, gehen Sie wie folgt. Ihre i Variable ist also tatsächlich ein Buchstabe, keine Ganzzahl.

x = "test" 
for i in x: 
    print(i) 

Aber, wenn Sie wirklich Ihre i wollen eine ganze Zahl sein, statt for i in x, for i in range(0, len(x)) verwenden:

Also, jeden Buchstaben des Strings x, nur print(i) verwenden zu drucken. In diesem Fall müssten Sie auf den Brief zugreifen, indem Sie das verwenden, was Sie ursprünglich geschrieben haben (x[i]).

x = "test" 
for i in range(0, len(x)): 
    print(x[i]) 
+0

Danke! Das war sehr ausführlich und deckte alles ab, worüber ich Bedenken hatte. –

0

Wenn Sie wirklich ein Schleifenindex aus irgendeinem Grund möchten, können Sie enumerate verwenden:

x = 'test' 
for i, c in enumerate(x): 
    print(i, x[i], c) 
0

Das hat mich ein wenig, als auch zu verstehen, aber ich glaube, ich das Missverständnis zu verstehen. Das i in for i in x verweist bereits auf das Zeichen, nicht auf den Index. Zum Beispiel

stringx='hello world for i in stringx: print stringx[i] Schreiben ist das gleiche wie das Schreiben

print stringx['h'] 
Verwandte Themen