Why do I get the error "NameError: name 'kh' is not defined"
Why do I get the error "NameError: name 'kh' is not defined"
我正在使用 sys 接收输入数据,有 2 个字符串 b
和 l
,它们将转到 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)
我希望 k
和 a
的值是浮点数,但我收到以下错误:
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
为什么会发生这种情况,我该如何解决?
这可能是因为您的 if
和 elif
语句未涵盖的情况。如果 b
和 l
与这两种情况中的任何一种都不匹配,则永远不会定义或赋予变量值。
您应该在 elif
块之后添加一个默认 else
大小写,使用您想要的任何默认值:
else:
f = 0
kh = 0
ah = 0
kv = 0
av = 0
tao = 0
但是,如果您遇到此问题,则意味着您可能收到了意想不到的输入。也可以添加一些打印语句来判断b
和l
的值,写出对应的case
我正在使用 sys 接收输入数据,有 2 个字符串 b
和 l
,它们将转到 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)
我希望 k
和 a
的值是浮点数,但我收到以下错误:
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
为什么会发生这种情况,我该如何解决?
这可能是因为您的 if
和 elif
语句未涵盖的情况。如果 b
和 l
与这两种情况中的任何一种都不匹配,则永远不会定义或赋予变量值。
您应该在 elif
块之后添加一个默认 else
大小写,使用您想要的任何默认值:
else:
f = 0
kh = 0
ah = 0
kv = 0
av = 0
tao = 0
但是,如果您遇到此问题,则意味着您可能收到了意想不到的输入。也可以添加一些打印语句来判断b
和l
的值,写出对应的case