python - 如果,elif,否则故障?

标签 python python-2.7

我是编程新手,我编写了一个程序来求解方程中的不同变量。我设置了“if”、“elif”和“else”来求解方程的不同部分。但出于某种原因,它只会解决第一部分(“如果”部分)我将复制并粘贴下面的程序。

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)

最佳答案

这部分的计算结果总是True:

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

它并没有像您认为的那样做;它正在这样做:

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

'a' 的计算结果为 True,因此它通过了。您可能想要的是:

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

关于python - 如果,elif,否则故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35250275/

相关文章:

php - 无法确定 laravel 文件路径

python - ValueError : Error when checking input: expected gru_5_input to have shape (None, None, 10) 但得到形状为 (1, 4, 1) 的数组

python-2.7 - 使用 python 读取 MS Word 文件中的自定义文档属性

python - Python 单元测试中是否有针对子列表的断言?

python - 如何在字典中查找匹配项

python - 在 Mac OS X 10.8.3 上导入 pylab 的问题

mysql - 如何使用Python最有效的方式将列表中可变数量的元素复制到统一列表并存储在MySQL中?

python - 如何让 Tkinter 和 pygame 协同工作?

python - Oauth1.0 : How to generate HMAC-SHA1 Oauth_signature without using Access token and token secret in python?

python - 如果行中的指定值匹配条件,则从 CSV 返回行