为什么会出现错误“NameError:name'kh'未定义”

2024-05-16 01:41:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用sys接收输入数据,有两个字符串bl,它们将转到if语句,并将值赋给kh和其他变量,但我一直得到一个关于kh的错误

输入如下所示:

# Data Input

# Latitude
lat = float(sys.argv[1])
# Longitude
lon = float(sys.argv[2])
# Frequency Band
b = str(sys.argv[3])
# Link Type
l = str(sys.argv[4])
# Elevation
hs = float(sys.argv[5])/1000

if语句如下所示:

if b == 'C' and l == 'UL':
    f = 6
    kh = 0.0007056
    ah = 1.5900
    kv = 0.0004878
    av = 1.5728
    tao = 45
elif b == 'C' and l == 'DL':
    f = 4
    kh = 0.0001071
    ah = 1.6009
    kv = 0.0002461
    av = 1.2476
    tao = 45

k = (kh + kv + (kh - kv) * pow(cos(radians(lat)), 2) * cos(radians(2 * tao))) / 2
print('k = ', k)
a = (kh * ah + kv * av + (kh * ah - kv * av) * pow(cos(radians(lat)), 2) * cos (radians(2 * tao))) / (2 * k)
print('a = ', a)

我希望ka的值是浮点数,但我得到以下错误:

Traceback (most recent call last):
  File "pluviobol.py", line 529, in <module>
    k = (kh + kv + (kh - kv) * pow(cos(radians(lat)), 2) * cos(radians(2 * tao))) / 2
NameError: name 'kh' is not defined

为什么会发生这种情况?我如何解决


Tags: if错误sys语句cosfloatlattao
1条回答
网友
1楼 · 发布于 2024-05-16 01:41:36

这可能是因为你的ifelif语句没有涉及到一个案例。如果bl与这两种情况中的任何一种都不匹配,那么变量就永远不会被定义或给定值

您应该在elif块之后添加一个默认的else大小写,使用您想要的任何默认值:

else:
    f = 0
    kh = 0
    ah = 0
    kv = 0
    av = 0
    tao = 0

然而,如果你遇到这个问题,这意味着你可能会得到意想不到的输入。您还可以添加一些print语句来确定bl的值,并编写相应的案例

相关问题 更多 >