在Python中,“mes”本地变量在赋值之前被引用?

2024-10-05 12:21:48 发布

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

我正在处理这个函数,它将儒略日转换为公历日期,输出应该类似于22.0,12.0,2000这就是为什么在打印时我有这三个变量,但是当我运行它时,它会给我错误:

local variable 'mes' referenced before assignment.

此外,“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)

提前谢谢你。在


Tags: or函数alphaif错误int公历elif
2条回答

朋友,回顾一下变量范围的话题,在IF-ELSE中比较变量之前先声明变量。用一些值初始化它们。例如

month = 0

^{1}$

if...else中使用变量mes,然后打印其值。 即使变量mes存在,但您在if...else块中赋值,这自然会在if块内创建变量,因此当您试图打印mes时,它会给出错误:

您应该首先在if语句之前将变量声明为0,然后在if块中进一步使用它。在

例如:

^{1}$

变量A也是如此。在

会有用的!在

相关问题 更多 >

    热门问题