2013-10-30 127 views
0

我是新来的Python乡亲,请温柔:)提示/技巧:Python的

我仍然对我的蟒蛇技能刷牙并希望在习惯得到用我的程序创建功能。我希望能与人联系,并要求提供关于将程序性程序分解为功能的任何提示/技巧。我现在正在做一些事情,我想我有一个很好的方向,但希望看看有没有人有经验或可以提供一些建议。

def main(): 
    print("Welcome to Invitational Chess Tournament.1st Round Pairing below:") 

def openlist:  
    myfile = open('CHESS.txt','r') 
    players = [] 

def creatlist(players): 
    for line in myfile:   
     line = line.rstrip('\n') 
     players.append(line) 
     players.sort() 

def findpairs(players):        
    m= len(players)//2   
    for i in range(m): 
     print (players[i],"&", players[i+m]) 

myfile.close() 

main() 
+0

请修复您的缩进。目前还不清楚您是在尝试定义嵌套函数还是使用'myfile'作为全局变量。 – chepner

回答

1

只是一些(未分类)建议:

  • 不返回任何东西的功能被称为“程序”
  • 使功能只能做一两件事,一两件事,没有副作用效果 - 。想想给这个函数一些东西,修改它并返回它。这样你可以缩短它们,并且很容易重用它们。学习面向对象的编程(oop)它可以让你创建“对象”出来的东西,并使新编程人员更直观的编程。作为一个非常基本的例子,你可以做如下事情:player.move(right);
  • 与上一点相关的是,想想你的函数的范围。如果一个函数只被它的封闭类使用,请将其设为私有。
  • 记录你的功能。在每个函数的开始处,创建一个小的注释,解释它的作用(不是如何!),并可能解释参数。并不是每个人都喜欢这个,但是如果你曾经在一个库中分享你的代码,这是必须的。

混凝土:

与您的设计停留,openlist可以改善。它打开myfile,但它也会创建一个数组players[],但从不返回。你可以删除数组声明并添加一个return语句,但是你只剩下一个只能初始化一个变量的函数。这不是很有帮助,可以考虑删除该功能,直接使用myfile = open...

def creatlist(players)是一个更有用的程序,但您可以通过将其定义为def createlistfromfile(file)并使其返回已初始化和已填充的玩家阵列来使其更加清晰。

def findpairs(players)是好的,但尝试使它返回一个数组与对,而不是直接打印它。您可能需要稍后使用它。用不同的步骤打印数组。

+0

非常感谢你的所有资源和提示!我感谢大家的帮助。干杯! – goodgirlatx347