Eduard Eduard - 2 months ago 8
Python Question

I don't understand this sentence

I'm new to learning Python and I'm making a lot of questions these days. I tried to make a Bulls and Cows game, but I failed and then I searched on the internet for the code. I found this sentence and I don't know what it does:

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


I don't understand the
\
, what exactly evaluates the Boolean and what does
char
mean in
all()
also there is one more
\
. I'm a bit confused.

I will leave the rest of the code here:

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)

Answer

Typically, code in python needs complete itself on one line. If you would, instead, like to have line breaks to continue an expression to the next line (the most obvious reason being to increase readability) then you can insert a \ at the end of the line.

This tells python to treat the next line as if it is a part of the existing line.