@barakuda1

Не записывает или неправильно вывожу массив в python 3.9.1?

Python 3.9.1

import datetime

now = datetime.datetime.now()
iGetDay = []

def dow(date):
    days=["понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"]
    iGetDay = date.weekday()

def hour_func():
	iCurrentHour = now.hour #Получаю текущий час

	iResult = 0

	if iCurrentHour == 10:
		print('Все верно, сейчас 10:00')
		iResult = 1
	elif iCurrentHour == 5:
		print('Все верно, сейчас 05:00')
		iResult = 2
	else:
		print('Сейчас не 10:00 и не 05:00')
		iResult = 3


	print('Текущий час: %d' % iCurrentHour)

	return iResult

def day_func():
	iCurrentDay = iGetDay #Получаю текущий день

	iResultDay = 0

	if iCurrentDay == 'понедельник':
		print('Все верно, сейчас понедельник')
		iResultDay = 1
	elif iCurrentDay == 'суббота':
		print('Все верно, сейчас суббота')
		iResultDay = 2
	elif iCurrentDay == 'воскресенье':
		print('Все верно, сейчас воскресенье')
		iResultDay = 2
	else:
		print('Сейчас не вторник и не суббота')
		iResultDay = 3

	print('Текущий день: %s' % iGetDay)
	print(iGetDay)

	return iResultDay

def main():
    iDay = day_func()
    iHour = hour_func()
	
    print('Main')
    print('день: %s' % iDay)
    print('час:%d' % iHour)
    print('----')

    
    if iDay == 2: #iResult = 2? Проверка на выходные дни
        print('Сегодня выходные')
    else:
        print('Сегодня будни')

    if iHour == 4: # Сейчас 10:00?
        print('Сейчас утро, 10:00')
    else:
        print('Какое-то другое время')


main()


Выводит пустой массив или неправильно вывожу:

print('Текущий день: %s' % iGetDay)
	print(iGetDay)


Общий результат:

Сейчас не вторник и не суббота
Текущий день: []
[]
Сейчас не 10:00 и не 05:00
Текущий час: 1
Main
день: 3
час:3
----
Сегодня будни
Какое-то другое врем
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Почитайте про области видимости (пространства имён).
У вас есть два списка iGetDay. Один - в глобальном пространстве имён модуля, другой - в локальном пространстве функции dow.
Это разные объекты, никак друг с другом не связанные.
Вам лучше возвращать значение из функции при помощи return и результат выполнения функции связывать с глобальным именем вне функции.
И все значения явно передавать в функции как параметры функции и получать из функции как return. И не полагаться на области видимости, они неявные и в них легко запутаться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы