локальная переменная 'mes' упоминается перед присваиванием в python? - PullRequest
0 голосов
/ 01 марта 2019

Я работаю над этой функцией, которая преобразует юлианский день в григорианскую дату, вывод должен выглядеть как ex.22.0,12.0,2000 вот почему в печати у меня есть эти три переменные, но когда я запускаю их, мне выдается ошибка:

локальная переменная 'mes', на которую ссылаются перед присваиванием.

Кроме того, «А», кажется, выделяется желтым цветом с предупреждением «на локальную переменную А можно ссылаться до назначения».Я не знаю, как это исправить.

Я пытался изменить отступ, но я не вижу, что не так.

Ниже моя функция:

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)

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Друг, просмотрите тему области видимости переменных, объявите переменные, прежде чем сравнивать их в IF -ELSE.Инициализируйте их с некоторым значением.Например

month = 0

A = 0
0 голосов
/ 01 марта 2019

Вы используете переменную mes в if...else и затем печатаете ее значение.Даже если переменная mes существует, вы присваиваете ее значение в блоке if...else, естественно, это создаст переменную внутри блока if, и поэтому при попытке вывести mes выдает ошибку:

Сначала вы должны объявить переменную как 0 перед оператором if, а затем использовать ее в блоке if.

Например:

.....
mes=0
if (E>14):
  mes=E-1
......

И то же самое относится и к переменной A.

Это будет работать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...