[英]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
我不了解其中的大多數內容,例如, oldx
是oldx
為什么它在oldx
和結尾處都表示空白" "
,所以= x
使得R無法看到oldx
和x
之間的差異,因此我也無法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.