我正在研究将该儒略日转换为公历日期的函数,其输出应类似于ex。 22.0,12.0,2000
就是为什么在打印中我有这三个变量,但是当我运行它时,它给了我错误:
分配前已引用本地变量'mes'。
此外,“ A”似乎以黄色突出显示,并带有警告“可能在分配之前引用了局部变量A”。我不知道该如何解决。
我尝试更改缩进,但是我看不出有什么问题。
下面是我的功能:
def JD2fechaGregoriana(fecha):
fecha1=int(fecha+0.5)
fecha2=float(fecha1-fecha)
Z =fecha1
F = fecha2
if (Z<2299161):
A=Z
elif (Z>= 2291161):
alpha=int((Z-1867216.25)/36524.25)
A= Z + 1 + alpha -int(alpha/4)
B= A +1524
C= int((B-122.1)/365.25)
D= int(365.25*C)
E= int((B-D)/30.6001)
dia1= B-D - int(30.6001*E)+F
if (E>14):
mes=E-1
elif (E==14 or E==15):
mes=E-13
if (mes>2):
anio=C-4716
elif(mes==1 or mes==2):
anio=C-4715
print(dia1,mes,anio)
谢谢。
答案 0 :(得分:0)
您正在mes
中使用变量if...else
,然后打印其值。
即使变量mes
存在,您仍要在if...else
块中分配其值,这自然会在if
块中创建变量,因此当您尝试打印mes
时给出错误:
您应该首先在if语句之前将变量声明为0
,然后在if块中进一步使用此变量。
例如:
.....
mes=0
if (E>14):
mes=E-1
......
变量A
也是如此。
那行得通!
答案 1 :(得分:0)
朋友,请查看变量范围的主题,在IF -ELSE中比较变量之前先声明变量。用一些值初始化它们。例如
month = 0
A = 0