Created
September 7, 2023 21:24
-
-
Save hudsonbrendon/a9cfe2ad44a6128ce4cc3139c4404319 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
# TODO: Implemente a função de busca binária para o computador | |
def binary_search_guess(low: int, high: int) -> int: | |
mid = (low + high) // 2 | |
print(f"O computador chutou {mid}!") | |
return mid | |
def main(): | |
# TODO: Gere um número aleatório para o jogador adivinhar | |
random_number = random.randint(1, 1000) | |
# TODO: Peça ao jogador para escolher um número para o computador adivinhar | |
computer_number = int( | |
input("Escolha um número entre 1 e 1000 para o computador adivinhar: ") | |
) | |
if computer_number < 1 or computer_number > 1000: | |
print("Número inválido, informe um número entre 1 e 1000!") | |
return | |
# TODO: Inicialize contadores para o número de tentativas | |
player_count = 0 | |
computer_count = 0 | |
player_finished = False | |
computer_finished = False | |
low = 1 | |
high = 1000 | |
# TODO: Faça um loop até que ambos, jogador e computador, adivinhem o número | |
while True: | |
# TODO: Implemente a lógica para a tentativa do jogador | |
if not player_finished: | |
player_number = int(input("Escolha um número entre 1 e 1000: ")) | |
if player_number < 1 or player_number > 1000: | |
print("Número inválido, informe um número entre 1 e 1000!") | |
return | |
if player_number < random_number: | |
print("Muito baixo!") | |
player_count += 1 | |
elif player_number > random_number: | |
print("Muito alto!") | |
player_count += 1 | |
else: | |
print("Você acertou!") | |
player_count += 1 | |
player_finished = True | |
# TODO: Implemente a lógica para a tentativa do computador usando busca binária | |
if not computer_finished: | |
computer_random_number = binary_search_guess(low, high) | |
if computer_random_number < computer_number: | |
print("Muito baixo!") | |
computer_count += 1 | |
low = computer_random_number + 1 | |
elif computer_random_number > computer_number: | |
print("Muito alto!") | |
computer_count += 1 | |
high = computer_random_number - 1 | |
else: | |
print("O computador acertou!") | |
computer_count += 1 | |
computer_finished = True | |
# TODO: Anuncie o vencedor com base no menor número de tentativas | |
if computer_finished and player_finished: | |
if player_count < computer_count: | |
print( | |
f"Você ganhou com {player_count} jogadas, o computador fez {computer_count} jogadas!" | |
) | |
break | |
elif player_count > computer_count: | |
print( | |
f"O computador ganhou, você fez {player_count} jogadas e o computador {computer_count}!" | |
) | |
break | |
else: | |
print(f"Empate, ambos fizeram {player_count} jogadas!") | |
break | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment