将程序性程序分解为函数的提示/技巧:Python

时间:2013-10-30 14:12:54

标签: list function python-3.x user-defined-functions

我是蟒蛇人的新手,请保持温柔:)

我仍在努力学习我的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 ()

2 个答案:

答案 0 :(得分:1)

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

  • 一个不会返回任何内容的函数称为"过程"
  • 让函数做一件事,只做一件事,没有副作用。认为给函数一些东西,修改它并返回它。通过这种方式,您可以将它们缩短,并且可以轻松地重复使用它们。
  • 学习面向对象编程(oop)它允许你创建"对象"出于问题,使编程对于新手程序员来说更加直观。作为一个非常基本的例子,你可以做一些事情:player.move(右);
  • 与前一点相关,请考虑您的功能范围。如果某个函数仅由它的封闭类使用,请将其设为私有。
  • 记录您的功能。在每个函数的开头,创建一个小注释来解释它的作用(而不是如何!)并可能解释参数。不是每个人都喜欢这样,但是如果您在图书馆中共享代码,则必须这样做。

混凝土:

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

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

def findpairs(players)很好,但是尝试让它返回一个带有对的数组,而不是直接打印它。您可能需要稍后使用它。使用不同的过程打印阵列。

答案 1 :(得分:0)

您的功能打开列表什么都不做。它只创建了2个变量,但从未返回它们。我建议你阅读一些基本的python教程。它们都涵盖了函数式编程。例如,Wikibooks有一些好文章:http://en.wikibooks.org/wiki/Python_Programming