2013-03-28 31 views
28

Tôi đang viết một Python đơn giản cho vòng lặp để prnt ký tự hiện tại trong một chuỗi. Tuy nhiên, tôi không thể có được chỉ số của nhân vật. Đây là những gì tôi có, không ai biết một cách tốt để có được các chỉ số hiện tại của nhân vật trong vòng lặp?Python Đối với chỉ số nhận vòng lặp

loopme = 'THIS IS A VERY LONG STRING WITH MANY MANY WORDS!' 

for w in loopme: 
    print "CURRENT WORD IS " + w + " AT CHARACTER " 
+1

Bên cạnh những vấn đề đánh số, bạn có chắc đây là những gì bạn muốn? 'w' là ký tự hiện tại, không phải từ. –

Trả lời

62

Sử dụng enumerate() function để tạo chỉ mục cùng với các yếu tố của chuỗi bạn đang Looping trên:

for index, w in enumerate(loopme): 
    print "CURRENT WORD IS", w, "AT CHARACTER", index 
+0

vì vậy với hàm liệt kê(), bạn cần xác định hai biến? một cho chỉ mục và một cho các ký tự? – user1817081

+0

@ user1817081: Bạn không * có *; bây giờ bạn đang lặp lại thứ gì đó tạo ra hai bộ giá trị. Sử dụng giải nén tuple chỉ giúp dễ dàng hơn trong việc 'nhận' chúng. –

+2

@ user1817081: Bạn cũng có thể làm 'cho elem trong liệt kê (loopme)', sau đó sử dụng 'elem [[0]' cho giá trị chỉ mục và 'elem [1]' cho ký tự, nhưng đó chỉ là cồng kềnh hơn. –

4

Bạn có muốn để lặp qua ký tự hoặc chữ?

Đối với những từ, bạn sẽ phải chia những lời đầu tiên, chẳng hạn như

for index, word in enumerate(loopme.split(" ")): 
    print "CURRENT WORD IS", word, "AT INDEX", index 

này in ra chỉ số của từ này.

Đối với vị trí nhân vật tuyệt đối bạn cần một cái gì đó giống như

chars = 0 
for index, word in enumerate(loopme.split(" ")): 
    print "CURRENT WORD IS", word, "AT INDEX", index, "AND AT CHARACTER", chars 
    chars += len(word) + 1 
Các vấn đề liên quan