Estou apredendo a programar, então se o código abaixo estiver com alguma informação incorreta, por favor deixe a explicação correta nos comentários. Tento explicar o código linha a linha para facilitar.
Exercicio: O objetivo do programa abaixo é inserir um número inteiro e transforma-lo em um binário, octal ou hexa.
E dar ao usuário a opção de escolha se é binario, hexa ou octa
(Alguns links (sim wikipedia) que podem explicar melhor o que é cada um:
Hexadecimal: https://pt.wikipedia.org/wiki/Sistema_de_numera%C3%A7%C3%A3o_hexadecimal
Octal: https://pt.wikipedia.org/wiki/Sistema_octal
Binário: https://pt.wikipedia.org/wiki/Sistema_de_numera%C3%A7%C3%A3o_bin%C3%A1rio )
Vamos ao código:
while True:
n = int(input('Digite um número: '))
print('- - - - '* 5)
print('[1] Binário')
print('[2] Octal')
print('[3] Hexadecimal')
print('[x] Sair')
perguntanum = str(input('Digite a opção que deseja converter: '))
if perguntanum == 'x'or perguntanum == 'X':
break
elif perguntanum == '1' or perguntanum == '2' or perguntanum == '3':
if perguntanum == '1':
rio = str(bin(n))
print(rio)
elif perguntanum == '2':
cta = str(oct(n))
print(cta)
elif perguntanum == '3':
exa = str(hex(n))
print(exa)
else:
print('Opção invalida!')
Como será exibido:
Digite um número:
[1]Binário
[2] Octal
[3] Hexadecimal
Digite a opção que deseja converter:
Como fica:
Digite um número: 25
[1]Binário
[2] Octal
[3] Hexadecimal
Digite a opção que deseja converter: 3
0x19
Explicação do código:
while True: """Vamos utilizar o while para repetir a programa"""
n = int(input('Digite um número: ')) """Aqui o n representa uma variável para armazenar os dados que estamos solicitando.
INT é para o programa entender que estamos informado a entrada de um número.
INPUT para que o usuário possa colocar a informação"""
print('- - - - '* 5) """PRINT imprime a informação. Quando informo o texto e multiplico (*) por algum valor ele irá repetir a quantidade de vezes que for informado.
Exemplo: - - - -- - - -- - - -- - - -- - - - irá aparecer desta forma para o usuário"""
print('[1] Binário') """dentro do parenteses posso utilizar as aspas simples (' ') ou duplas (" ") """
print('[2] Octal')
print('[3] Hexadecimal')
print('[x] Sair')
perguntanum = str(input('Digite a opção que deseja converter: ')) """Variavável para armazenar a informação no caso aqui informado como str(string) que é o formato de texto
if perguntanum == 'x'or perguntanum == 'X': """ Aqui o comando SE(if) vai validar se o usuário desessa fechar o programa, tem duas opções o X em minusculo e em maiusculo, então essa linha vai validar qual a informação que o usuário inseriu na variável.
break ""SE o usuário apertou X para fechar. O código será encerrado"""
elif perguntanum == '1' or perguntanum == '2' or perguntanum == '3': """nessa linha do SENÃO vamos validar se o usuário inseriu alguma opção do menu, para que o usuário não insira qualquer número ou letra.
if perguntanum == '1': """ dentro do elif vamos inserir as opções do menu e validar se o que usuário inseriu e uma opção do menu.
rio = str(bin(n)) """bin() método leva um único parâmetro e retornar a string binária equivalente ao inteiro fornecido. Se não for especificado um inteiro, ele levanta uma TypeErrorexceção destacando que o tipo não pode ser interpretado como um inteiro.
Observação NÃO colocar o nome da variável de binario como bin, pois o sistema irá entender que se trata do método assim retornando erro'""
print(rio) """Imprime o resultado da variável"""
elif perguntanum == '2':
cta = str(oct(n))
print(cta)
elif perguntanum == '3':
exa = str(hex(n))
print(exa)
else:
print('Opção invalida!')
Como será exibido:
Digite um número:
[1]Binário
[2] Octal
[3] Hexadecimal
Digite a opção que deseja converter:
Como fica:
Digite um número: 25
Digite a opção que deseja converter: 3
0x19 """O prefixo 0x representa que o resultado é uma string hexadecimal."""
OU
Digite um número: 25
Digite a opção que deseja converter: j
Opção inválida!
Observação: se não for um inteiro, deve implementar index() para retornar um inteiro
References bibliographical:
https://www.programiz.com/python-programming/methods/built-in/oct
https://www.programiz.com/python-programming/methods/built-in/bin
https://www.programiz.com/python-programming/methods/built-in/hex
Top comments (3)
Embora a expressão
str(input(...))
possa ser bastante interessante didaticamente, informando o tipo do que está sendo lido, na prática ela é desnecessária, visto que a funçãoinput
já retorna umstr
(ou string). Quando usado desta forma, só irá verificar que já é do tipo desejado e retornar sem alterações.Também é possível trabalhar melhor os as condições para evitar verificar diversas vezes, exemplo:
Assim não precisa verificar diversas vezes se é igual a
'1'
.No mais, o artigo ficou muito melhor formatado, parabéns. Só lembrar de fechar os
"""
no código comentado ficar correto o syntax highlight.Obrigada pela dica de str, vou me atentar a montar o projeto ao invés de validar linha a linha tentar usar um for.
Bom dia srta Katsumi, usei seu script e inclui um item a mais que faz também a transformação para a tabela ascii
elif conversao == '4':
ascii = chr(n)
print(ascii)