There are several ways to do this:
- Loop with infinity with while True
just remembering that this way you need to add a option or exit condition break the loop with the command break otherwise it will keep running until you stop it manually.
while True: # Começa o loop
# Principal
print('Bem vindo ao seu contador virtual. (help para ajuda)')
opcao = input('O que deseja? ')
if opcao.upper().strip() == 'HELP':
print('Ola, estou aqui para te ajudar sempre que precisar :)')
print('Suas opções são: ')
print('"Adicionar"=> para adicionar um novo livro.')
print('"Avaliar"=> para dar uma nota a um livro.')
print('"Atualizar"=> para atualizar as informações de algum livro.')
print('"Remover"=> para apagar os dados de algum livro.')
print('"Listar"=> para mostrar as informações de todos os livros registrados.')
print('"Status"=> para mostrar informações sobre um livro especifico.')
print('"Sair"=> Encerra o loop')
elif opcao.upper().strip() == 'ADICIONAR':
nome_livro = input('Digite o nome do livro: ')
nome_autor = input('Digite o nome do autor: ')
numero_pagina = int(input('Digite a pagina que você está: '))
numero_total = int(input('Digite o numero total de paginas: '))
cursor.execute('INSERT INTO dados (nome_livro, nome_autor, pagina, pagina_total) VALUES (?,?,?,?)', (nome_livro, nome_autor, numero_pagina, numero_total))
con.commit()
con.close()
elif opcao.upper().strip() == 'AVALIAR':
cursor.execute('SELECT id,nome_livro FROM dados')
for linha in cursor.fetchall():
print(linha)
id_nota = int(input('Digite o numero do livro que deseja'))
# Opção de saída para terminar o loop
elif opcao.upper().strip() == "SAIR":
break
In addition to giving more control over the loop, functions can be called elsewhere in the code and run again.
def contador_virtual():
# Principal
print('Bem vindo ao seu contador virtual. (help para ajuda)')
opcao = input('O que deseja? ')
if opcao.upper().strip() == 'HELP':
print('Ola, estou aqui para te ajudar sempre que precisar :)')
print('Suas opções são: ')
print('"Adicionar"=> para adicionar um novo livro.')
print('"Avaliar"=> para dar uma nota a um livro.')
print('"Atualizar"=> para atualizar as informações de algum livro.')
print('"Remover"=> para apagar os dados de algum livro.')
print('"Listar"=> para mostrar as informações de todos os livros registrados.')
print('"Status"=> para mostrar informações sobre um livro especifico.')
print('"Sair"=> Encerra o loop')
elif opcao.upper().strip() == 'ADICIONAR':
nome_livro = input('Digite o nome do livro: ')
nome_autor = input('Digite o nome do autor: ')
numero_pagina = int(input('Digite a pagina que você está: '))
numero_total = int(input('Digite o numero total de paginas: '))
cursor.execute('INSERT INTO dados (nome_livro, nome_autor, pagina, pagina_total) VALUES (?,?,?,?)', (nome_livro, nome_autor, numero_pagina, numero_total))
con.commit()
con.close()
elif opcao.upper().strip() == 'AVALIAR':
cursor.execute('SELECT id,nome_livro FROM dados')
for linha in cursor.fetchall():
print(linha)
id_nota = int(input('Digite o numero do livro que deseja'))
# Opção de saída para terminar o loop
elif opcao.upper().strip() == "SAIR":
return True # Finaliza a função
contador_virtual() # Roda a função novamente caso ela não tenha entrado na condição de saída
contador_virtual() # Chamando função para ser rodada
It is important to note that the Return True will terminate the function at the time it is called (ie will terminate the function without rotating the rest of the lines that compose it) without closing your program as I will talk below.
As stated earlier in the comments by Lucas Maraal you can add a sys.Exit() to shut down the program completely.
I will just add a new condition inside the function and import the sys module:
elif opcao.upper().strip() == "FECHAR":
import sys # Recomendo importar junto do sqlite3 lá no começo do código
sys.exit()
Allows you to run a sequence of lines a limited number of times. (You can receive a command from break to shut it down earlier)
The i within the code can be replaced by anything else fewer numbers and the range(5) indicates how many times you will run the loop.
for i in range(5):
# Principal
print('Bem vindo ao seu contador virtual. (help para ajuda)')
opcao = input('O que deseja? ')
if opcao.upper().strip() == 'HELP':
print('Ola, estou aqui para te ajudar sempre que precisar :)')
print('Suas opções são: ')
print('"Adicionar"=> para adicionar um novo livro.')
print('"Avaliar"=> para dar uma nota a um livro.')
print('"Atualizar"=> para atualizar as informações de algum livro.')
print('"Remover"=> para apagar os dados de algum livro.')
print('"Listar"=> para mostrar as informações de todos os livros registrados.')
print('"Status"=> para mostrar informações sobre um livro especifico.')
print('"Sair"=> Encerra o loop')
elif opcao.upper().strip() == 'ADICIONAR':
nome_livro = input('Digite o nome do livro: ')
nome_autor = input('Digite o nome do autor: ')
numero_pagina = int(input('Digite a pagina que você está: '))
numero_total = int(input('Digite o numero total de paginas: '))
cursor.execute('INSERT INTO dados (nome_livro, nome_autor, pagina, pagina_total) VALUES (?,?,?,?)', (nome_livro, nome_autor, numero_pagina, numero_total))
con.commit()
con.close()
elif opcao.upper().strip() == 'AVALIAR':
cursor.execute('SELECT id,nome_livro FROM dados')
for linha in cursor.fetchall():
print(linha)
id_nota = int(input('Digite o numero do livro que deseja'))
# Opção de saída para terminar o loop
elif opcao.upper().strip() == "SAIR":
break
Or you can combine the method of function with the loops for e while
It’s an inifito loop this way, but you can add some condition instead of the True to better control how many times he will run the lines within it.
Or you can just put one if right after rotating the function that allows the loop to be broken by placing a break within it.
while True: # Ou alguma outra condição qualquer
contador_virtual()
I will run the function 5 times here for example:
for i in range(5):
contador_virtual()
This answers your question? How to make the system display an error message when it is not number?
– fernandosavio
You for example put the execution of your program in a loop
while True:
and add an option that terminates the program, that is, when the condition falls on that option you give an instruction such assys,exit()
orbreak
, depending on what you wish. This helps?– Lucas Maraal