2017-02-22 30 views
-4

我正在這裏一些代碼:你怎麼知道python中的for循環何時迭代一個字母或索引?

# Codecademy "9. Scrabble" 
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
     "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
     "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
     "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
     "x": 8, "z": 10} 

x = "DuVeT" 
total = 0 
for i in x: 
    print score[i.lower()] 
    total += score[i.lower()]  
print total 

我的問題是: 我怎麼知道什麼時候「我」在一個for循環實際上是一個索引號與實際的性格嗎?在這種情況下,當我第一次經過循環時,i =「D」。我以爲我會= 0爲索引。你能幫助我理解一個for循環如何使用索引號與字母進行操作嗎?

+0

在Python中,'對in'循環總是迭代值,而不是指數。 – Hamms

+0

它永遠不會是一個計數器,除非你明確地使它成爲一個(例如使用'range'或'enumerate')。正常的行爲是通過「迭代」(in之後的事情)並將各個值分別賦值給循環變量。如果你需要一個計數器,你可以使用'for i,enumerate(x)中的item:' –

+0

@Hamms這是不正確的。 for循環將遍歷迭代器返回的內容。在字典的情況下,它是關鍵而不是價值。 –

回答

0

你看看「for i in」之後的東西:這是一個可迭代的對象。在您提供的情況下,x是一個字符串;它的元素是字符。

如果你想遍歷索引位置,你必須得到物體的長度和迭代的是,如:

for i in range(len(x)): 
    print score[x[i].lower()] 

你看到它是如何工作?處理索引時,可以將其用作字符串中的下標以獲取所需的一個字符。

0

短版:

  1. 對於映射類型(dict,從相關類collections),迭代是在映射
  2. 對於大多數的東西,這不是一個映射,例如的鑰匙tupleliststr,bytes, set等,迭代超過這些值。

如果您需要序列的索引以及值,則幾乎總是需要enumerate函數,例如,

for i, x in enumerate(someseq): 

同樣,要得到一個映射鍵和值,您想要的items方法(iteritems上的Py2):

for k, v in mymapping.items():