Modify the guessing-game program so that the user thinks of a number that the computer must guess.

The computer must make no more than the minimum number of guesses, and it must prevent the user from cheating by entering misleading hints.

Use I'm out of guesses, and you cheated and Hooray, I've got it in X tries as your final output.

(Hint: Use the math.log function to compute the minimum number of guesses needed after the lower and upper bounds are entered.)

And here is the code i wrote that works until one point:

# Modify the code below:
import random
import math

smaller = int(input("Enter the smaller number: "))
larger = int(input("Enter the larger number: "))

count = 0

print()
while True:
count += 1
myNumber = (smaller + larger) // 2
print('%d %d' % (smaller, larger))
print('Your number is %d' % myNumber)
choice = input('Enter =, <, or >: ')
if choice == '=':
print("Hooray, I've got it in %d tries" % count)
break
elif smaller == larger:
print("I'm out of guesses, and you cheated")
elif choice == '<':
larger = myNumber - 1
else:
smaller = myNumber + 1

This guessing game works up until this question:

Failed: Test 0-50, when 1 is picked then switched when correctly guessed.

This is the input the automater did:

Enter the smaller number: Enter the larger number:
0 50
Your number is 25
Enter =, <, or >: 0 24
Your number is 12
Enter =, <, or >: 0 11
Your number is 5
Enter =, <, or >: 0 4
Your number is 2
Enter =, <, or >: 0 1
Your number is 0
Enter =, <, or >: 1 1
Your number is 1
Enter =, <, or >: I'm out of guesses, and you cheated
1 1
Your number is 1
Enter =, <, or >:
Traceback (most recent call last):
File "guess.py", line 16, in
choice = input('Enter =, <, or >: ')
EOFError: EOF when reading a line

Respuesta :

Answer:

import random

import math

smaller = int(input("Enter the smaller number: "))

larger = int(input("Enter the larger number: "))

count = 0

print()

while True:

   count += 1

   myNumber = (smaller + larger)

   print('%d %d' % (smaller, larger))

   print('Your number is %d' % myNumber)

   choice = input('Enter =, <, or >: ')

   if choice == '=':

       print("Hooray, I've got it in %d tries" % count)

       break

   elif smaller == larger:

       print("I'm out of guesses, and you cheated")

       break

   elif choice == '<':

       larger = myNumber - 1

   else:

       smaller = myNumber + 1

Explanation:

  • Inside an infinite while loop, add the smaller and larger number and assign that value to myNumber variable.
  • Check the choice and then print the relevant display message.