Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Limpar tela

Bom dia. Fiz uma implementação neste exemplo de jogo de adivinhação, incrementando no sentido de limitar uma adivinhação de um número variando de 1 a 512 no menor número de tentativas possível. Porém gostaria de limpar a tela no início do jogo e depois a cada tentativa de digitação de um número incorreto. Pesquisei porém a instrução os.system.cls não funcionou... Gostaria também de criar uma classe para limpar a tela e chama-la quando entender como necessário.

#modulos importados import random import os

print("*") print("Bem vindo ao jogo de Adivinhação!") print("*")

lim_inferior = 1 lim_superior = 512

numero_secreto = random.randrange(lim_inferior, lim_superior +1) total_de_tentativas = 1

print(numero_secreto)

for rodada in range(1, lim_superior): os.system("cls" if os.name == 'nt' else 'clear')

Limpa_tela()

print("{:3d} a. tentativa".format(total_de_tentativas))
chute_str = input("Digite um número entre {:1d} e {:3d}: ".format(lim_inferior, lim_superior))
chute = int(chute_str)
print("Você escolheu o número: {:3d}".format(chute))
total_de_tentativas = total_de_tentativas + 1

if(chute < lim_inferior or chute > lim_superior):
    print("Você deve digitar um número entre {:1d} e {:3d}!".format(lim_inferior, lim_superior))
    continue

acertou = chute == numero_secreto
maior   = chute > numero_secreto
menor   = chute < numero_secreto

if(acertou):
    print("Você acertou!")
    break
else:
    if(maior):
        print("Você errou! O seu chute foi maior do que o número secreto.")
    elif(menor):
        print("Você errou! O seu chute foi menor do que o número secreto.")

print("Fim do jogo. Parabéns! Você acertou o número secreto na {:3d} tentativa.".format(total_de_tentativas))

5 respostas

Oi Otavio! Como vai?

Qual o sistema operacional que está usando?

Boa tarde. Estou utilizando o Windows 10

solução!

Oi Otávio!

Fiz uma série de testes e pesquisas, aparentemente, de fato, o 'cls' não funciona no console da IDE. Mas se você rodar seu código no terminal do PyCharm ou se acessar o arquivo pelo prompt de comando do sistema, o trecho do código funcionará:


import os

print("Oi")
print("Tudo bem?")

def limpar():
     os.system('cls')

limpar()

O que alguma pessoas costumam sugerir nos fóruns, embora não seja uma solução "limpa", é a de imprimir uma série de linhas.

def limpar() : 
    print ("\n" * 100)

limpar()

Também existem maneiras de emular o comando (ctrl + l), desde que esteja configurado como atalho dentro do PyCharm, mas se tratam de soluções bem complexas.

Aqui estão alguns links que usei como referência:

https://stackoverflow.com/questions/1432480/any-way-to-clear-pythons-idle-window

https://teamtreehouse.com/community/clear-screen-for-pycharm-as-if-it-were-on-console-or-cmd

https://www.w3schools.com/python/python_lambda.asp

Espero que ajude!

Bom dia Marina, por sua atenção. Realmente minha procura é para evitar a inserção de linhas como forma de "limpar a tela"... é uma solução horrível. Criei a função limpar_tela() e ao executar da console, realmente a tela é limpa, porém ao utilizar a função executando pelo Pycharm, aparece uma "seta para cima" indicando que ali existe um caracter especial, porém não limpa a tela.

Sim! Nos meus testes aconteceu a mesma coisa. Não encontrei outras soluções além das que eu pontuei ali em cima.

Se encontrar outra solução, por favor, compartilha com a gente =)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software