Reputation: 23
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
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