程序跳过 if 语句

时间:2021-01-28 11:38:14

标签: python

我是 Python 的初学者。 我为我的导航作业创建了一个小程序,当我输入数据时,它为我解决了它,但它不起作用。它询问最初的问题以确定要解决哪种类型的问题,然后,当它应该解决它时,它崩溃了。这是为什么?

import math

print("Insert all values in degree decimal form.")
prob = input("1 or 2")
if prob == 1:
    fia = input("Insert value of phi in A: ")
    lama = input("Insert value of lambda in A: ")
    route = input("Insert value of true route: ")
    vel = input("Insert speed: ")
    Tma = input("Insert Established Time of Departure: ")
    Tmb = input("Insert Established Time of Arrival: ")
    deltaT = Tmb - Tma
    print(deltaT)
    m = vel * deltaT
    print(m)
    deltafi = (m / 60) * math.cos(route)
    print(deltafi)
    fib = fia + deltafi
    if fib > 180:
        fib1 = -(360 - fib)
        fib = fib1
        print(fib)
    else:
        print(fib)
    fim = (fia + fib) / 2
    print(fim)
    deltalam = (m * math.sin(route) / (60 * math.cos(fim)))
    lamb = lama + deltalam
    if lamb > 180:
        lamb1 = -(360 - lamb)
        lamb = lamb1
        print(lamb)
    else:
        print(lamb)
    print("Coordinates of B: ")
    print(fib, lamb, Tmb)
elif prob == 2:
    fia = input("Insert value of phi in A: ")
    lama = input("Insert value of lambda in A: ")
    fib = input("Insert value of phi in B: ")
    lamb = input("Insert value of lambda B: ")
    deltafi = fib - fia
    deltalam = lamb - lama
    fim = (fia + fib) / 2
    tanroute = (deltalam / deltafi) * math.cos(fim)
    route = math.atan(tanroute)
    m = (60 * abs(deltafi)) / math.cos(route)

3 个答案:

答案 0 :(得分:0)

python 中的输入以字符串形式接收值,并且您将它与 if 条件中的整数值进行比较

将您的输入语句更新为以下行以接收整数输入:

prob = eval(input("1 or 2"))

答案 1 :(得分:0)

输入法将您的数据解释为字符串,而不是整数。

在你的 if 条件中你必须输入

if int(prob) == 1:

答案 2 :(得分:0)

您必须将 prob 输入(以及所有其他输入)转换为 int,因为它默认被视为 stringprob = int(input("..."))

您也可以通过简单地打印 type(prob) 来验证这一点。