1

私は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 ()
4

2 に答える 2

2

いくつかの(ソートされていない)アドバイス:

  • 何も返さない関数を「プロシージャ」と呼びます
  • 副作用なしで、関数が 1 つのことだけを実行できるようにします。関数に何かを与え、それを変更して返すことを考えてください。このようにして、それらを短く保つことができ、簡単に再利用できます。
  • オブジェクト指向プログラミング (oop) を学ぶと、物事から「オブジェクト」を作成できるようになり、初心者のプログラマーにとってプログラミングがはるかに直感的になります。非常に基本的な例として、次のようなことができます。
  • 前のポイントに関連して、関数の範囲について考えてください。関数がそれを囲むクラスによってのみ使用される場合は、非公開にします。
  • 関数を文書化します。すべての関数の開始時に、(方法ではなく) 何を行うかを説明する小さなコメントを作成し、パラメーターについて説明することもできます。誰もがこれを好むわけではありませんが、たとえばライブラリでコードを共有する場合は必須です。

コンクリート:

あなたのデザインにとどまり、openlist改善される可能性があります。開きますがmyfile、配列も作成しplayers[]ますが、どちらも返しません。配列宣言を削除して return ステートメントを追加することもできますが、変数を初期化するだけの 1 行の関数が残ります。これはあまり役に立ちません。関数を削除してmyfile = open...直接使用することを検討してください。

def creatlist(players)def createlistfromfile(file)はより便利な手順ですが、次のように定義し、初期化されて満たされたプレーヤーの配列を返すようにすることで、より明確にすることができます。

def findpairs(players)問題ありませんが、直接出力するのではなく、ペアを含む配列を返すようにしてください。後で使用する必要がある場合があります。別の手順で配列を印刷します。

于 2013-10-30T14:19:35.153 に答える