<p>根据之前的建议和我个人的想法,我做了一些改变。进行一点错误检查,以确保此人输入了一个数字,并记录此人的猜测,以便多次猜测同一个数字不会对他们不利</p>
<pre><code>import random
orig_number = random.choice(range(1000, 9999))
copy_number = str(orig_number)
cows = 0
bulls = 0
guesses = []
def convert_to_int(data):
if data is None:
return False
try:
id = int(data)
except ValueError:
return False
else:
return True
while True:
guess = input("Guess a number > ")
if not convert_to_int(str(guess)[0]):
print("That was not a number")
continue
if str(guess)[0] in guesses:
print("You already guessed that number")
continue
elif str(guess)[0] in copy_number:
print("Good guess, you get a bull")
bulls += 1
copy_number = copy_number.replace(str(guess)[0],'')
else:
print("Too bad, you get a cow")
cows += 1
guesses.append(str(guess)[0])
print("You have {} cows and {} bulls".format(cows,bulls))
if len(copy_number) == 0: break
print("Congratulations! You guessed all the numbers. The original number was {}".format(orig_number))
</code></pre>
<p>从测试运行中:</p>
<pre><code>Guess a number > a
That was not a number
Guess a number > -
That was not a number
Guess a number > 9
Too bad, you get a cow
You have 1 cows and 0 bulls
Guess a number > 1
Too bad, you get a cow
You have 2 cows and 0 bulls
Guess a number > 4
Too bad, you get a cow
You have 3 cows and 0 bulls
Guess a number > 3
Too bad, you get a cow
You have 4 cows and 0 bulls
Guess a number > 6
Too bad, you get a cow
You have 5 cows and 0 bulls
Guess a number > 5
Good guess, you get a bull
You have 5 cows and 1 bulls
Guess a number > 7
Too bad, you get a cow
You have 6 cows and 1 bulls
Guess a number > 8
Too bad, you get a cow
You have 7 cows and 1 bulls
Guess a number > 9
You already guessed that number
Guess a number > 0
Good guess, you get a bull
You have 7 cows and 2 bulls
Guess a number > 1
You already guessed that number
Guess a number > 2
Good guess, you get a bull
You have 7 cows and 3 bulls
Congratulations! You guessed all the numbers. The original number was 2055
</code></pre>