3

私は本とインターネットを介してPythonを学んでいます。ゲームのスコアを別のクラスに保持しようとしています。私のアイデアをテストするために、簡単な例を作成しました。どういうわけか複雑すぎます。これを行うためのより簡単/より良い/よりPythonicな方法はありますか?

私のコードは次のとおりです。

import os

class FOO():
    def __init__(self):
        pass

    def account(self, begin, change):
        end = float(begin) + float(change)
        return (change, end)        

class GAME():
    def __init_(self):
        pass

    def play(self, end, game_start):
        os.system("clear")
        self.foo = FOO()

        print "What is the delta?"
        change = raw_input('> ')

        if game_start == 0:
            print "What is the start?"
            begin = raw_input('> ')
        else:
            begin = end

        change, end = self.foo.account(begin, change)
        print "change = %r" % change
        print "end = %r" % end

        print "Hit enter to continue."
        raw_input('> ')

        self.play_again(end, game_start)    

    def play_again(self, end, game_start):

        print "Would you like to play again?"
        a = raw_input('> ')
        if a == 'yes':
            game_start = 1
            self.play(end, game_start)
        else: 
            print "no"
            exit(0)

game = GAME()
game.play(0, 0)
4

2 に答える 2

1

コードをフォーマットする方法は次のとおりです。

import os

class Game(object):
    def play(self, end, game_start=None):
        os.system("clear")

        change = input('What is the delta? ')

        # Shorthand for begin = game_start if game_start else end
        begin = game_start or end
        end = float(begin + change)  

        print "change = {}".format(change)
        print "end = {}".format(end)

        self.play_again(end, game_start)    

    def play_again(self, end, game_start):
        raw_input('Hit enter to continue.')

        if raw_input('Would you like to play again? ').lower() in ['yes', 'y']:
            self.play(end, game_start)
        else:
            exit(0)

if __name__ == '__main__':
    game = Game()
    game.play(0, 0)

そして、いくつかのヒント:

  • 1つの特定のタスクを実行するためのコードのみを含む新しいクラスは作成しません。クラスが引数を取らないか、コードを単純化しない場合は、作成しないでください。ただしGame、クラスにコードを追加する可能性があるため、クラスは例外です。
  • Pythonでは、クラスはで記述されCamelCaseます。グローバル定数は通常、で記述されUPPERCASEます。
  • raw_input()文字列を返します。input()評価された文字列をPythonオブジェクトに返します。
于 2012-08-18T02:50:30.327 に答える
0

私はより良い方法で質問をし、ここで探していたものを手に入れました:

Python:引数を変更せずに関数を呼び出すにはどうすればよいですか?

于 2012-08-21T16:15:27.170 に答える