Jump to content
Fórum Script Brasil
  • 0

[Dúvida] Condição :s


Danillo Ilggner

Question

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 :)

Edited by Danillo Ilggner
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Fvox
Link to comment
Share on other 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...")

Edited by Danillo Ilggner
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...