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

Acabei de concluir o curso 1 do python e fui testar antes de começar a parte 2, tentei fazer uma calculadora, mas nao to conseguindo transformar as strings

print("Bem vindo ao meu projeto de calculadora")
print("aproveite :)")

numero1 = input("Qual o primeiro número?:")
numero2 = input("Qual o segundo número?:")
print("Seus números são: {} e {}".format(numero1, numero2))

if numero1 == int:
    int(numero1)
elif numero1 == float:
    float(numero1)
elif numero1 == bool:
    bool(numero1)
elif numero1 == complex:
    complex(numero1)

print(type(numero1))
5 respostas

Bom dia Samuel, tudo bem? Espero que sim!

Quando você utiliza a função input no python, o resultado é sempre uma string, independente se você digitou um número inteiro ou um float. P

Portanto, numero1 e numero2 no seu código serão strings.

Ao fazer a comparação:

if numero1 == int

Você estará comparando uma variável com a classe inteiro, para comparar se o tipo daquela variável é do tipo inteiro, você precisaria fazer de uma maneira diferente:

if type(numero1) == int

Mas essa maneira não é recomendada, o melhor seria usar uma função isinstance:

if isinstance(numero1, int)

Essas informações são só a título de curiosidade. No seu código, você será necessário comparar o tipo da sua variável para poder transformá-la. Como o input é sempre uma string, basta você transformá-la diretamente para o tipo que você desejar:

print("Bem vindo ao meu projeto de calculadora")
print("Aproveite :)")

numero1 = float(input("Qual o primeiro número?:"))
numero2 = float(input("Qual o segundo número?:"))
print("Seus números são: {} e {}".format(numero1, numero2))

Repare que na mesma linha já está havendo a transformação do input diretamente de string para o tipo float, logo as suas variáveis já serão do tipo float. Se você quiser dar tratamentos diferentes para as suas variáveis, como é o caso de complexos, você pode pedir ao usuário para digitar qual tipo de variável você quer que esteja os números:

print("Bem vindo ao meu projeto de calculadora")
print("Aproveite :)")

tipo_numero = input("Qual o tipo de número você quer operar?\n(1) - Inteiro\n(2) - Decimal\n(3) - Complexo\n")
numero1 = input("Qual o primeiro número?:")
numero2 = input("Qual o segundo número?:")
print("Seus números são: {} e {}".format(numero1, numero2))

if tipo_numero == "1":
    numero1 = int(numero1)
    numero2 = int(numero2)
elif tipo_numero == "2":
    numero1 = float(numero1)
    numero2 = float(numero2)
elif tipo_numero == "3":
    numero1 = complex(numero1)
    numero2 = complex(numero2)

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Entendi, eu tinha pensado nisso, porém depois eu tentei fazer de alguma maneira que o código automaticamente detectasse o tipo de número e já convertesse, foi o que tentei fazer a olho nu, teria como, ou o mais prático seria como você fez?

Olá Samuel, caso queira utilizar números complexos na calculadora, vai precisar de alguma forma de detectar se aquele número é complexo ou não.

Caso não for utilizar, pode sempre usar o float porque as operações com inteiros também vão funcionar, daí pode usar aquele bloco de código que mostrei a você que já muda o input automaticamente.

Aqui embaixo vai uma maneira mais automática de o seu código identificar qual é o tipo de entrada, provavelmente não é a única maneira, mas foi uma na qual pensei que pode ajudar. Essa forma vai identificar o número com base na string do seu input.

print("Bem vindo ao meu projeto de calculadora")
print("Aproveite :)")

numero1 = input("Qual o primeiro número?:")
numero2 = input("Qual o segundo número?:")
print("Seus números são: {} e {}".format(numero1, numero2))

if "." in numero1:
    numero1 = float(numero1)
elif "j" in numero1 or "J" in numero1:
    numero1 = complex(numero1)
else:
    numero1 = int(numero1)

if "." in numero2:
    numero2 = float(numero2)
elif "j" in numero2 or "J" in numero2:
    numero2 = complex(numero2)
else:
    numero2 = int(numero2)

Dessa forma, o programa identifica se há um ponto ( . ) no número e vai identificá-lo como float, se há um j, tanto maiúsculo quanto minúsculo, vai identificá-lo como complexo. Caso não esteja em nenhum desses casos esse número será um inteiro.

Se não for atrapalhar, você pode me ajudar numa ultima coisa? quanto a importação de módulo, eu fui tentar importar o que tinha da calculadora, porém o programa principal não reconheceu, segue o código.

def calculadora():
    print("Bem vindo ao meu projeto de calculadora")
    print("Aproveite :)")"

    tipo_numero = int(input("Qual o tipo de número você quer operar?(1)- Inteiro (2)- Decimal (3)- Complexo"))
    numero1 = input("Qual o primeiro número?:")
    numero2 = input("Qual o segundo número?:")
    print("Seus números são: {} e {}".format(numero1, numero2))
    print("Agora diga que operação deseja fazer:")
    print("(1)- Adição (2)- Subtração (3)- Divisão (4)- Multiplicação ")
    operacao = int(input("Que operação deseja usar?"))

    if tipo_numero == 1:
        numero1 = int(numero1)
        numero2 = int(numero2)
    elif tipo_numero == 2:
        numero1 = float(numero1)
        numero2 = float(numero2)
    elif tipo_numero == 3:
        numero1 = complex(numero1)
        numero2 = complex(numero2)

    if operacao == 1:
        print("O resultado é:", numero1 + numero2)
    elif operacao == 2:
        print("O resultado é:", numero1 - numero2)
    elif operacao == 3:
        print("O resultado é:", numero1 / numero2)
    elif operacao == 4:
        print("O resultado é:", numero1 * numero2)

if(__name__ == "__main__" ):
    calculadora()
solução!

No programa principal, você deve escrever o nome do arquivo .py no seu import, por exemplo:

Se seu arquivo da calculadora chamar calc.py, escreva no arquivo principal o import:

import calc

# Feito o import você pode executar a função calculadora a partir do módulo

calc.calculadora()

Se quiser escrever diretamente a função no arquivo principal, escreva:

from calc import calculadora

# Feito o import, você pode usar a função diretamente

calculadora()