簡體   English   中英

在python中循環和分支

[英]loop and branching in python

我只是python的初學者,我必須做基於它的第一個練習,我也有他們的解決方案,但我有一些問題,從一些命令行了解其中的一些,語句和函數。

這是練習之一:創建一個名為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

我不了解其中的大多數內容,例如, oldxoldx為什么它在oldx和結尾處都表示空白" " ,所以= x使得R無法看到oldxx之間的差異,因此我也無法oldx stamment: oldx + "_" + x

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

感謝大家提前為您提供幫助

請注意,“答案”是無用的復雜。 一個更簡單的算法,具有更好的命名和擺脫無用的“計數”變量:

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”版本,但是pythonic版本是單行的:

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

循環遍歷colourList保持計數變量。 每次循環,它都會增加,因此在循環的任何階段,它的值都是列表中從零開始的位置。

 oldx = " "

oldx始終是'上一項'的值。 作者選擇在程序的這一點上聲明變量,因此它必須具有一些初始值。 他們選擇了 由於某些原因。 什么都沒關系,它的價值在使用之前就已經改變了。 if后面說'只打印oldx一次count > 0 ,所以oldx有一個值'。

 for x in colourList:

循環遍歷列表。 第一輪, count將為零。

     if count > 0:

如果count大於零,即不是第一輪,而是每隔一個輪。 IE不會為第一個元素執行此操作。

         print oldx + "_" + x

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

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

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

     oldx = x
     count += 1

這個元素將成為下一輪的“最后一個元素”。

 print mixList

打印出新的清單。

通常,對於此類問題,如果您有變量並且不確定如何在程序中更改它們,請在進行操作時將其打印出來。 然后,您可以在值發生變化時跟蹤程序的執行情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM