0

私はこの方法を持っています:

def get_user_info(self):

    month       = choice(range(1,13))
    day         = choice(range(1,29))
    year        = choice(range(1966,1994))  
    f_name      = self.assign_name('FirstNames')
    l_name      = self.assign_name('LastNames')
    e_address   = f_name+l_name+year.__str__()+day.__str__()
    password    = f_name+l_name+'0008383'

    user_info = dict({
            'month'     : month,
            'day'       : day,
            'year'      : year,

            'f_name'    : f_name,
            'l_name'    : l_name,
            'e_address' : e-address,
            'password'  : password
    })

    print user_info

正しい結果が得られますが、同じコードを 2 回書いているように入力します。したがって、私の質問は、最初に変数を作成せずに同じ結果を得る方法であり、それらを dict() に入れます。

f_name と l_name などを異なるキーと値のペアで使用する必要があることに注意してください。

4

3 に答える 3

3

あなたが計算している値を考えると、あなたが現在行っている方法は多かれ少なかれあなたができる最善の方法であると私は考える傾向があります. メソッドを直接呼び出すのではなく、呼び出しをスキップして組み込み関数dictを使用するなど、いくつかの小さな改善がありますが、高レベルで行うべき良い変更は実際にはありません。str__str__

その理由は、変数の最初の 5 つをそれぞれ少なくとも 2 回使用しているためです。それらを独自のキーの下でディクショナリに格納される値として一度個別に使用し (たとえば、f_name値は として格納されます)、および/またはuser_info["f_name"]の値を構築するためにも使用します。最初の 5 つの値をディクショナリに直接入れることは可能ですが、他の計算で使用するためにそれらを再度取得するには、現在のコードよりもさらに冗長なコードが必要です。e_addresspassword

e_addressしたがって、または計算を他の値とは無関係になるように変更したくない場合を除きpassword、私はあなたが持っているものに固執します。

于 2012-12-11T03:24:06.803 に答える
1

コードをリファクタリングするのか、長さを短くするのかわからない。

後者の場合は、複数の割り当てを実行して行を減らすことができます。

だから次のようなもの:

def get_user_info(self):

    month, day, year      = choice(range(1,13)) , choice(range(1,29)), choice(range(1966,1994))  
    f_name, l_name        = self.assign_name('FirstNames') , self.assign_name('LastNames')
    e_address, password   = f_name+l_name+year.__str__()+day.__str__(), f_name+l_name+'0008383'

そして、あなたは本当に'dict()'を入れる必要はありません、{}それはすでにあります!

于 2012-12-11T02:59:12.437 に答える
0

これはおそらく、読みやすさを犠牲にすることなく実行できる最短の方法です (ただし、たとえば、 PEP8のコンパイルを改善します)。

    def get_user_info(self):
        month = choice(range(1, 13))
        day = choice(range(1, 29))
        year = choice(range(1966, 1994))
        f_name = self.assign_name('FirstNames')
        l_name = self.assign_name('LastNames')
        print {'month' : month,
               'day' : day,
               'year' : year,
               'f_name' : f_name,
               'l_name' : l_name,
               'e_address' : f_name + l_name + str(year) + str(day),
               'password' : f_name + l_name + '0008383'}

補足として、パスワード生成ポリシーを再考してください。コードでは非常に安全ではありません。

monthまた、e_address割り当てを逃した可能性があることに気付きましたか?

于 2012-12-11T07:16:46.977 に答える