Ir para conteúdo
Fórum Script Brasil
  • 0

[Dúvida] Condição :s


Danillo Ilggner

Pergunta

Há muito tempo eu venho acompanhando o fórum, mas nunca me cadastrei. Hoje eu precisei me cadastrar, para tirar uma dúvida muito chata e simples, mas vem me causando muita dor de cabeça :s

É sobre um comando de condição que não está funcionando em uma calculadora simples que estou fazendo. Vou colocar o código inteiro, e depois a parte que não funciona.

print("Olá, vamos testar uma pequena calculadora?")
print("Para ela funcionar coomo esperado, siga as instruções corretamente, caso contrário o programa irá dar erro!")

# Definindo a variável com o input
operacoes = str(input("Primeiro, você quer saber o significado das operações? [Y/N] "))

# Condição, que, se for verdadeira retorna com um pequeno tuto
if operacoes == "Y" or "y":
    print("+ = Adição")
    print("- = Subtração")
    print("* = Multiplicação")
    print("/ = Divisão")
    print("% = Resto")
elif operacoes == "N" or "n":
    print("Você é direto, não quer atalhos, então vamos direto aos cálculos!")

# Laço para a calculadora sempre se repetir
while True:
    num1 = int(input("Digite o primeiro número: "))
    sinal = str(input("Digite o sinal de operação [+,-,*,/,%]: "))
    num2 = int(input("Digite o segundo número: "))
    
# Condição dos sinais para retornar com o resultado
    if sinal == "+":
        print("O resultado de", num1,"+",num2, "é", num1 + num2)
    elif sinal == "*":
        print("O resultado de", num1,"*",num2, "é", num1 * num2)
    elif sinal == "/":
        print("O resultado de", num1,"/",num2, "é", num1 / num2)
    elif sinal == "%":
        print("O resultado de", num1,"%",num2, "é", num1 % num2)
    elif sinal == "-":
        print("O resultado de", num1,"-",num2, "é", num1 - num2)
    print("Você pode usar o quanto quiser, vamos tentar de novo?")
Agora com a parte do código que não está dando certo:
# Definindo a variável com o input
operacoes = str(input("Primeiro, você quer saber o significado das operações? [Y/N] "))

# Condição, que, se for verdadeira retorna com um pequeno tuto
if operacoes == "Y" or "y":
    print("+ = Adição")
    print("- = Subtração")
    print("* = Multiplicação")
    print("/ = Divisão")
    print("% = Resto")
elif operacoes == "N" or "n":
    print("Você é direto, não quer atalhos, então vamos direto aos cálculos!")

Quando eu chego a essa parte do programa, mesmo se eu digitar Y ou N, vai aparecer o significado das operações, e eu quero que quando apertasse Y aparecesse o significado, e quando eu apertar N aparecer a frase "Você é direto, não quer atalhos, então vamos direto aos cálculos!". O que estou fazendo de errado? o.õ

@EDIT

Dei um pequeno edit no código, optimizei ele pra ficar mais pequeno e de melhor compreensão :)

Editado por Danillo Ilggner
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Ufa, consegui resolver meu problema, mas ainda fiquei um pouco duvidoso sobre o comando que estava causando o problema. Por causa disso tive que adicionar mais uma condição e ainda vou ter que adicionar um laço :s

O comando que estava causando o problema é "or", ele fazia com que de alguma forma, o interpretador não reconhcesse as strings "Y" e "N". Maldito dia em que li um tutorial sobre este comando ¬¬'

Fica a dica, e obrigado por pelo menos lerem, se tiver mais dúvidas, este será o primeiro fórum em que vou postar :)

Link para o comentário
Compartilhar em outros sites

  • 0

Hi.

Cara, não programo em Python, mas...

Eu te recomendaria utilizar a função raw_input ao invés de input(). Assim:

operacoes = str(raw_input("Primeiro, você quer saber o significado das operações? [Y/N] "))
A comparação funciona perfeitamente assim. Outra coisa é um erro de lógica nas condicionais. Quando você faz:
if operacoes == "Y" or "y":
Pelo menos nas linguagens de programação que programo, sempre quando há uma string não vazia, o resultado ao converter para bool é true. Ou seja, aí você tá testando se operacoes for a letra "Y" ou verdadeiro, então faz. Quando na verdade, deveria testar se operacoes for a letra "Y" ou operacoes for a letra "y":
if operacoes == "Y" or operacoes == "y":

[]'s

Editado por Fvox
Link para o comentário
Compartilhar em outros sites

  • 0

Beeem, deu certo em partes em relação a:

if operacoes == "Y" or operacoes == "y":
Mas tudo bem, ao final do post posto o código e como ele ficou, até que gostei, apliquei o or em outra parte, e deu certo ^^' Próxima missão: Fazer uma calculadora com interface gráfica Tkinter. @Fvox Tente Python sim, é uma linguagem divertida de se programar ^^' Ah, se for estudar python, atualize para alguma versão 3.x, é mais poderosa ;) @Código:
#Definindo as funções
def adição(num1, num2):
    print("O resultado de", num1,"+",num2,"é", num1 + num2)
def subtração(num1, num2):
    print("O resultado de", num1,"-",num2,"é", num1 - num2)
def multiplicação(num1, num2):
    print("O resultado de", num1,"*",num2,"é", num1 * num2)
def divisão(num1, num2):
    print("O resultado de", num1,"/",num2,"é", num1 / num2)
def resto(num1, num2):
    print("O resultado de", num1,"%",num2,"é", num1 % num2)

print("Olá, vamos testar uma pequena calculadora?")
print("""Para ela funcionar como esperado, siga as instruções corretamente
Caso contrário o programa irá dar erro!""")

# Definindo a variável com o input
op = input("Você quer saber o comando de cada operação? [Y/N] ")

# Condição que se for verdadeira retorna com um pequeno tuto

if op == "Y":
    print("+ = Adição")
    print("- = Subtração")
    print("* = Multiplicação")
    print("/ = Divisão")
    print("% = Resto")
elif op == "y":
    print("+ = Adição")
    print("- = Subtração")
    print("* = Multiplicação")
    print("/ = Divisão")
    print("% = Resto")
elif op == "N":
    print("Você é direto, não quer atalhos, então vamos direto aos cálculos!")
elif op == "n":
    print("Você é direto, não quer atalhos, então vamos direto aos cálculos!")

# Laço para a calculadora se repetir
laço = "Y"

while laço == "Y" or laço == "y":
    num1 = int(input("Digite o primeiro número: "))
    sinal = str(input("Digite o sinal de operação [+,-,*,/,%]: "))
    num2 = int(input("Digite o segundo número: "))
    
# Condição dos sinais para retornar com o resultado
    if sinal == "+":
        adição(num1, num2)
    elif sinal == "*":
        multiplicação(num1, num2)
    elif sinal == "/":
        divisão(num1, num2)
    elif sinal == "%":
        resto(num1, num2)
    elif sinal == "-":
        subtração(num1, num2)
    elif sinal != "+" or "-" or "*" or "/" or "%":
        print("Ops, operação inválida!")
    laço = input("Você pode usar o quanto quiser, quer tentar de novo? [Y/N] ")

# Apenas um comando para sair do programa
if laço != "Y" or laço != "y":
    input("Pressione ENTER para sair...")

Editado por Danillo Ilggner
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...