2013-10-23 29 views
2

我只是一個初學者在Python中,我必須做它的第一個練習,我也有他們的解決方案,但雖然我有問題要了解其中的一些,語句和函數一些命令行。循環和分支在python中

這是練習之一:創建一個名爲mixlist的新空白列表。這個新列表將包含色彩列表中兩個相鄰顏色的顏色混合。顏色列表中的前兩種顏色是「紅色」和「黃色」。因此,mixlist中的第一項將是「紅黃色」(紅色和黃色的混合)。注意'_'字符。創建一個循環,自動填充混合列表。最後,輸入mixlist查看結果。如果結果錯誤,您必須更正程序。

這就是答案:

colourList = ['red', 'yellow', 'green', 'white'] 
mixList = [] 

count = 0 
oldx = " " 

for x in colourList: 
    if count > 0: 
     print oldx + "_" + x 
     mixList.append(oldx + "_" + x) 
    oldx = x 
    count += 1 

print mixList 

我不明白大部分的東西在裏面,比如,什麼是oldx爲什麼它意味着在開始時一個空白" ",然後在年底爲= x所以R可以看不到oldxx之間的差異,所以我還沒有得到這stamment:oldx + "_" + x

我很困惑,我需要一些幫助......

感謝大家在您的幫助

+2

你應該嘗試閱讀python。網上有很多教程。 – Marmstrong

回答

2
count = 0 

通過colourList維護計數變量爲你循環。它每次循環都會遞增,因此在循環的任何階段,其值都是從零開始的列表中的位置。

oldx = " " 

oldx始終是'上一項'的值。作者選擇在程序中的這一點聲明變量,所以它必須有一些初始值。他們選擇了出於某種原因。它無關緊要,它的價值在使用之前就已經改變了。稍後的if表示'只打印oldx一次count > 0,因此oldx有一個值。

for x in colourList: 

遍歷列表。第一次,count將爲零。

 if count > 0: 

如果count大於零,即不是第一次,而是每隔一次。 I.E.不要爲第一個元素做這件事。

  print oldx + "_" + x 

打印最後一個元素加上當前元素。

  mixList.append(oldx + "_" + x) 

也把它放在混合列表中,所以我們在迭代時建立mixlist。

 oldx = x 
    count += 1 

此元素將成爲下一次「最後一個元素」。

print mixList 

打印出新列表。

一般來說,對於這類問題,如果您有變量,而且您不確定它們是如何通過程序進行更改的,則可以隨時打印出來。隨着值的變化,您可以跟隨程序的執行。

+1

我不確定'oldx'必須在這裏有一個初始值,正是因爲(如你所說)它在設置之前從未被使用過。如果缺少'oldx =「」',那麼代碼的行爲應該完全相同(除非這種咖啡還沒有產生效果)。 – DSM

+0

我的意思是如果它在循環外部聲明,它必須有一定的價值。它不需要在那裏聲明。 – Joe

5

請注意,「答案」是無用的複雜。具有更好的namings一個簡單的算法,並擺脫無用的「計數」變量:

colourList = ['red', 'yellow', 'green', 'white'] 
mixList = [] 
prev_colour = None 

for current_colour in colourList: 
    if prev_colour is not None: 
     mix = prev_colour + "_" + current_colour 
     print mix 
     mixList.append(mix) 

    prev_colour = current_colour 

print mixList 

現在,雖然這可能是最好的「CS 101」的版本,Python的版本是一個班輪:

mixList = ["%s_%s" % pair for pair in zip(colourList, colourList[1:])] 
+1

不知道你可以用這種方式壓縮不等長的列表。便利! –