2017-08-21 12 views
0

Google Pythonスタイルのrcファイルでpylintを実行することで、自分のコードを整理しようとしています。私はちょうど奇妙に見えるので、これが最初の印刷行の正しいスタイルであることを確認したいが、Googleスタイルのrcfileは正しいスタイルであることを示している。任意の明確化がいただければ幸いです Google pythonスタイルとpylintを使って長い行をPythonでスタイルするにはどうすればいいですか?

for position, length in STEPS: 
    guess = prompt_guess(position, length) 
    score = compute_score(guess, position, word) 
    total = + total + score 
    print("Your guess and score were: " + ('_' * position + str(guess) + 
     ('_' * (len(word) - length -position))) + " : " + str(score)) 
    print("") 

、感謝

+1

何 'プリント()'に複数の引数を渡すことについては?お互いに文字列を追加する必要はありません。 –

+0

私は推測が好きで、出力にかかわらず、同じ行にこのよう スコアなり、 あなたの推測とスコアは以下の通りであった。at____:0 –

+0

'プリント(「A」、「B」、「C」)' - > 'abc' –

答えて

0

あなたはprint中にあなたの文字列を構築するべきではありません。 メッセージが非常に長い場合は、それを構築するためにいくつかの手順を実行します。

s = "Your guess and score were: " 
s += '_' * position 
s += str(guess) 
s += '_' * (len(word) - length - position) 
s += " : " 
s += str(score)) 

str.formatメソッドを使用すると、少しクリーナーにすることができます。 パラメータが指定された名前によると、中括弧に置き換えられます:自分の名前が長い場合には

pad1 = '_' * position 
pad2 = '_' * (len(word) - length - position) 
s = "Your guess and score were: {pad1}{guess}{pad2} : {score}" 
s = s.format(pad1=pad1, pad2=pad2, guess=guess, score=score) 

これは、あなたがリストとしてパラメータをインデントすることができます:

s = s.format(pad1=pad1, 
      pad2=pad2, 
      guess=guess, 
      score=score) 

定義した場合あなたの文字列を補間する値をたくさん持っている場合は

s = "Your guess and score were: {pad1}{guess}{pad2} : {score}" 
s = s.format(pad1='_' * position, 
      pad2='_' * (len(word) - length - position), 
      guess=guess, 
      score=score) 

:各パラメータの十分に短い、あなたはformatメソッドにそれを送ることができます、あなたは、変数名を取り除くことができますが、その後、中括弧が同じ順序でパラメータに置き換えられます。

s = "Your guess and score were: {}{}{} : {}" 
s = s.format(pad1, guess, pad2, score) 
+0

これは非常に役に立ちました。ありがとうございます。上記のコードを編集しました。 –

+0

@ S.Macようこそ。 80文字の制限が頸部の痛みであると尊重しているのですね:) –

+0

本当に笑です!私は毎日もっと勉強しています。ありがとうございました –

0

PEP-8 on indentationを参照してください:私は、各行の長さが、私はこのようにそれをフォーマットしただろう80文字

for position, length in STEPS: 
    guess = prompt_guess(position, length) 
    score = compute_score(guess, position, word) 
    total = + total + score 
    print("Your guess and score were: " + ('_' * position + str(guess) + 
              ('_' * (len(word) - length - 
                position))) + " : " + 
      str(score)) 
    print("") 

を超えてはならないことを知っています:

# YES: Aligned with opening delimiter. 
foo = long_function_name(var_one, var_two, 
         var_three, var_four) 

# NO: Arguments on first line forbidden when not using vertical alignment. 
foo = long_function_name(var_one, var_two, 
    var_three, var_four) 

(一貫性:Google Python Style Guide on indentation

また

should a line break before or after a binary operator?:。

# NO: operators sit far away from their operands 
income = (gross_wages + 
      taxable_interest + 
      (dividends - qualified_dividends) - 
      ira_deduction - 
      student_loan_interest) 

# YES: easy to match operators with operands 
income = (gross_wages 
      + taxable_interest 
      + (dividends - qualified_dividends) 
      - ira_deduction 
      - student_loan_interest) 
0

正しい、インデントは前の行の括弧に依存します。しかし、読みやすさがちょうどpylintを渡す以上で、検討してください。

print("Your guess and score were: {PAD1}{GUESS}{PAD2} : {SCORE}" 
     "".format(PAD1='_' * position, 
       GUESS=guess, 
       PAD2='_' * (len(word) - length - position), 
       SCORE=score)) 

(文字列連結の使用は、長い文字列を簡単に書式設定になります。)

関連する問題