2013-10-23 27 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

不知道你可以用这种方式压缩不等长的列表。便利! –