2016-09-08 8 views
0

私はPythonを学ぶのが初めてで、最近多くの質問をしています。私はBulls and Cowsゲームを作ろうとしましたが、失敗してインターネット上でコードを検索しました。私はこの文を発見し、私はそれが何をするか分からない:私はこの文を理解していません

while True: 
     guess = raw_input('\nNext guess [%i]: ' % guesses).strip() 
     if len(guess) == size and \ 
      all(char in digits for char in guess) \ 
      and len(set(guess)) == size: 
      break 
     print "Problem, try again. You need to enter %i unique digits from 1 to 9" % size 

は、私はまた、1以上\ありcharall()でまさにブールを評価し、何を意味し、\理解していません。私は少し混乱しています。

私はここでのコードの残りの部分を残します:

import random 

digits = '123456789' 
size = 4 
chosen = ''.join(random.sample(digits,size)) 
#print chosen # Debug 
print '''I have chosen a number from %s unique digits from 1 to 9 arranged in a random order. 
You need to input a %i digit, unique digit number as a guess at what I have chosen''' % (size, size) 

guesses = 0 
while True: 
    guesses += 1 
    while True: 
     # get a good guess 
     guess = raw_input('\nNext guess [%i]: ' % guesses).strip() 
     if len(guess) == size and \ 
      all(char in digits for char in guess) \ 
      and len(set(guess)) == size: 
      break 
     print "Problem, try again. You need to enter %i unique digits from 1 to 9" % size 
    if guess == chosen: 
     print '\nCongratulations you guessed correctly in',guesses,'attempts' 
     break 
    bulls = cows = 0 
    for i in range(size): 
     if guess[i] == chosen[i]: 
      bulls += 1 
     elif guess[i] in chosen: 
      cows += 1 
    print ' %i Bulls\n %i Cows' % (bulls, cows) 
+3

[Pythonでどのように改行を行うことができますか?](http://stackoverflow.com/questions/53162/how-can-i-do-a-line-break-line) -continuation-in-python) –

+0

これは、可読性を向上させるために、長い行の行を複数の行に分割することです。その良いプログラミングの練習と見なされます。 – stuartnox

+0

@stuartnoxそして最初のANDの後の行はどういう意味ですか? – Eduard

答えて

1

一般的に、Pythonのニーズのコードを1行に自分自身を完了します。そうではなく、次の行に式を続けるために改行したい場合(最も明白な理由は読みやすさを高めることです)、行末に\を挿入することができます。

これは、次の行を既存の行の一部として扱うようにpythonに指示します。

+0

最初のANDの後の行はどういう意味ですか? – Eduard

+2

完全に無関係ですが、クラスBrewmaster'のコードが大好きです...;) –

+0

@eduardジェネレータ内のすべてが真であれば、すべてが真を返します。だから、この例では、入力推測を行い、推測のすべての文字がdigits変数に現れる文字であることを確認しているように見えます。したがって、例えばFという文字が含まれているとこのコードを見ると、falseを返します。 –

関連する問題