Triton Seibert
Triton Seibert

Reputation: 23

if, elif, else glitch?

Im new to programming and I wrote a program to solve different variables in an equation. I have "if" "elif" and "else" set up to solve for different parts of the equation. For some reason though, it will only solve for the first part (the "if" part) I'll copy and paste the program below.

import math
print 'A=Pert Calculator'
print ''
print 'Created by Triton Seibert'
print ''
Y = raw_input('What letter would you like to solve for?: ')
if Y == 'A' or 'a' or '1':
    print 'Solving for A'
    print ''

    P = float(raw_input('Set value for P (initial investment):'))

    e = 2.71828
    print ''

    r = float(raw_input('Set value for r (rate):'))
    print ''

    t = float(raw_input('Set value for t (time in years):'))

    print ''
    ert = e**(r*t)
    answer = P*ert
    print 'A equals:'
    print answer

elif Y == 'P' or 'p' or '2':
    print 'Solving for P'
    print ''

    A = float(raw_input('Set value for A (Final answer):'))

    e = 2.71828
    print ''

    r = float(raw_input('Set value for r (rate):'))
    print ''

    t = float(raw_input('Set value for t (time in years):'))

    print ''
    answer = A / math.e**(r*t)
    print 'P equals:'
    print answer

elif Y == 'R' or 'r' or '3':
    print 'Solving for r'
    print ' '
    A = float(raw_input('Set value for A (Final answer): '))

    P = float(raw_input('Set value for P (initial investment):'))

    e = 2.71828
    print ' '

    t = float(raw_input('Set value for t (time in years):'))
    print ' '
    almost = A/P
    getting_there = math.log10(almost)/math.log10(e)
    answer = getting_there/t
    print 'r equals:'
    print answer

elif Y == 'T' or 't' or '4':
    print 'Solving for t'
    print ' '
    A = float(raw_input('Set value for A (Final answer): '))

    P = float(raw_input('Set value for P (initial investment):'))

    e = 2.71828
    print ' '

    r = float(raw_input('Set value for r (rate):'))
    print ' '
#equation here (not done yet)
    print 't equals:'
    print answer
else:
    print 'Not yet'

#change log to ln : log base e (x) = log base 10 (x) / log base 10 (e)

Upvotes: 2

Views: 145

Answers (1)

Riaz
Riaz

Reputation: 874

This part always evaluates to True:

if Y == 'A' or 'a' or '1':

It's not doing what you think it's doing; it's doing this:

if (Y == 'A') or ('a') or ('1'):

and 'a' evaluates to True, so it passes. What you probably want is:

if Y in ['A', 'a', '1']:

Upvotes: 6

Related Questions