2011-11-01 12 views
3

我對即將到來的分配研究,並試圖找出以下程序打印:當比較python中單詞的值時,爲什麼「Nick」會比「George」大?

d = ["Bob", "Tom", "George", "Susan", "Mary"] 

n = raw_input("Enter a name: ") # assume user enters Robert 

for name in d : 
    if name < n : 
     print name 

print 

size = len(d) 

i = 0 

while i < (size - 1) : 

    if d[i] > d[i+1] : 
     temp = d[i] 
     d[i] = d[i+1] 
     d[i+1] = temp 
    else : 
     d[i+1] = "Nick" 

    i += 1 
for name in d : 
print name 

我很困惑,因爲當我運行該程序將返回:

Enter a name: Robert 
Bob 
George 
Mary 

Bob 
George 
Nick 
Mary 
Nick 

我清楚混淆瞭如何計算單詞的價值。我以爲你將ascii值分配給單個字母,並將它們加在一起以獲取值,但使用該方法將無法獲得這些結果。 有人可以幫我理解嗎?

回答

5

它們是按字典順序排列的,所以如果第一個字母不相同,那麼第一個字母是唯一重要的。

做你想做什麼,可以使用

value=sum([ord(x) for x in name]) 
+0

更新(剛看到這是功課) - 也被稱爲**字典順序**! –