[英]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.