当我运行程序时,我的if语句永远不会返回任何内容

时间:2013-05-08 05:13:14

标签: python if-statement python-3.x

我试图制作一个简单的理想气体计算器但由于某种原因我似乎无法获得任何if语句来返回任何值。

def Ideal():
    p = input("Pressure:")
    v = input("Volume:")
    n = input("Moles:")
    t = input("Temperature in K:")
    r = 8.31

    if p is None:
        y =(n*r*t)/v
        return y
    elif v is None:
        return(n*r*t)/p
    elif n is None:
        return (p*v)/(r*t)
    elif n is None:
        return (p*v)/(n*r)

我从上面的代码转到了这个

def input_float(prompt):
result = input(prompt)
if result:
    return float(result)
else:
    return None

def Ideal():
p = input_float("Pressure:")
v = input_float("Volume:")
n = input_float("Moles:")
t = input_float("Temperature in K:")
r = 8.31

if p is None:
    y =(n*r*t)/v
    print(y)
elif v is None:
    u = (n*r*t)/p
    print(u)
elif n is None:
    i = (p*v)/(r*t)
    print(i)
elif t is None:
    o = (p*v)/(n*r)
    print(o)
else:
    print("This should never happen")

理想()

现在效果很好。但是我猜这里有一个更简单的方法,因为我在这里学习,我很乐意在这里发表意见。

1 个答案:

答案 0 :(得分:1)

input为您提供了一个字符串。如果用户没有提供任何输入,则不会得到None - 您将获得一个空字符串。您可能想要创建一个新函数来从用户那里获取输入,但如果他们什么都不输入则返回None并以其他方式解析它:

def input_float(prompt):
    result = input(prompt)
    if result:
        return float(result)
    else:
        return None

然后,您可以使用input s替换程序中的input_float