PyCharm condition error

-2

I'm getting condition error in PyCharm. It was working normally minutes ago. I already closed the program, but it did not solve.

valorProduto = float(input('Qual é o valor do produto de compra? R$ '))
modoPagamento = input('Deseja parcelar ou pagar à vista? ')

if modoPagamento == 'à vista' or 'À vista':
    desconto = valorProduto - (valorProduto * 20 / 100)
    print('Certo! Nesse caso, você recebe-rá 20% de desconto.')
    print('O novo preço do produto é R${:.2f}'.format(desconto))

elif modoPagamento == 'parcelar' or 'parcela':
    print('Certo! Pagamento parcelado. Segue abaixo tabela de parcelamentos:')
    print('=' * 10, 'Tabela', '=' * 10, '\n2 à 3 parcelas, acréscimo de 5%.\n4 à 6 parcelas, acréscimo de 10%.'
                                      '\n7 à 10 parcelas, acréscimo de 15%.\n11 parcelas ou mais, acréscimo de 25%.')
    parcela = int(input('Deseja fazer em quantas parcelas? '))

    if parcela <= 3:
        valorParcela = ((valorProduto / parcela) + ((valorProduto * 5) / 100))
        preçoFinal = valorParcela + valorParcela
        print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 5% sobre o valor do produto.\nTotalizando'
              ' {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela,
                                                                                         preçoFinal))

    elif parcela <= 6:
        valorParcela = (valorProduto / parcela) + ((valorProduto * 10) / 100)
        preçoFinal = valorParcela + valorParcela
        print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 10% sobre o valor do produto.\nTotalizando'
              ' {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela,
                                                                                         preçoFinal))

else:
    print('Modo de pagamento inválido!')
    
asked by anonymous 29.12.2018 / 00:50

1 answer

0

A few days ago I had a similar question and Anderson Woss answered me brilliantly in this post here: Difficulties with using IF .

Your problem is basically the same as mine. I copied his code, pasted here and put it to run, at first it always entered if of the view, even if I chose the installment option, as follows:

ThenImadechangestothefollowinglineofcode:

ifmodoPagamento=='àvista'or'Àvista':

I'vechangedto:

ifmodoPagamentoin{'àvista','Àvista'}:

And,therefore,Ialsomadechangesinthisline:

elifmodoPagamento=='parcelar'or'parcela':

I'vechangedto:

elifmodoPagamentoin{'parcelar','parcela'}:

NowtheprogramalreadyshowsmetheinstallmentoptionsifIchoosetheoptiontopayinstallments,asshownintheimagebelow:

Ialsonoticedthatyourprogramhasanerrorwhentheuserchoosesthepayinstallmentoption.Noticethefollowingimage:

Notice that I have chosen to pay in 3 times a product that costs 1000 reais and even with the 5% increase due to the installment the price of the final product was 766.67. This was due to an error in the mathematical construction of the solution and not exactly due to an error in the program, so I will not worry about fixing it, but notice that it could be done in a more succinct way, as I show below: >

if parcela <= 3:
    valorProduto = valorProduto * 1.05 #Multiplicando por 1,05 você já aumenta o preço final do produto em 5%
    valorParcela = (valorProduto / parcela)
    print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 5% sobre o valor do produto.\nTotalizando {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela, valorProduto))

Your final code looks like this:

valorProduto = float(input('Qual é o valor do produto de compra? R$ '))
modoPagamento = input('Deseja parcelar ou pagar à vista? ')

if modoPagamento in {'à vista','À vista'}:
    desconto = valorProduto - (valorProduto * 20 / 100)
    print('Certo! Nesse caso, você receberá 20% de desconto.')
    print('O novo preço do produto é R${:.2f}'.format(desconto))

elif modoPagamento in {'parcelar','parcela'}:
    print('Certo! Pagamento parcelado. Segue abaixo tabela de parcelamentos:')
    print('=' * 10, 'Tabela', '=' * 10, '\n2 à 3 parcelas, acréscimo de 5%.\n4 à 6 parcelas, acréscimo de 10%.'
                                  '\n7 à 10 parcelas, acréscimo de 15%.\n11 parcelas ou mais, acréscimo de 25%.')
    parcela = int(input('Deseja fazer em quantas parcelas? '))

    if parcela <= 3:
        valorProduto = valorProduto * 1.05
        valorParcela = valorProduto / parcela
        print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 5% sobre o valor do produto.\nTotalizando {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela, valorProduto))

    elif parcela <= 6:
        valorProduto = valorProduto * 1.10
        valorParcela = valorProduto / parcela
        print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 10% sobre o valor do produto.\nTotalizando {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela, valorProduto))

    elif parcela <= 10:
        valorProduto = valorProduto * 1.15
        valorParcela = valorProduto / parcela
        print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 15% sobre o valor do produto.\nTotalizando {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela, valorProduto))

    elif parcela > 10:
        valorProduto = valorProduto * 1.25
        valorParcela = valorProduto / parcela
        print('Certo! {} vezes. Nesse caso, você receberá um acréscimo de 25% sobre o valor do produto.\nTotalizando {} parcelas de R${:.2f} com o preço final do produto de R${:.2f}'.format(parcela, parcela, valorParcela, valorProduto))

I hope I have been able to help you.

    
05.01.2019 / 11:14