Задать вопрос
@yanelox

L-olfsdgdfsdfgsfgd Sdfg dfg?

Сделал программу для смены обоев, которая меняет обои в зависимости от времени года и суток:

import datetime
import time
import ctypes

time_now = datetime.datetime.now().hour  
time_month = datetime.datetime.now().month

print(time_now)
print(time_month)
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit am
  • Вопрос задан
  • 224 просмотра
Подписаться Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 4
MinTnt
@MinTnt
Условия проверки неправильно поставлены
if time_month == 9 or 10 or 11: можно сказать проверяет значение bool каждого элемента на соответствие True.
Т.е. это можно записать как:
if bool(time_month == 9) or bool(10) or bool(11):
А так как число, если оно не равняется 0, имеет значение bool автоматически True, имеем:
if bool(time_month == 9) or True or True:
Т.е., каждое из 4рёх общих условий выполняется всегда и в цикле

Лучше уже записывать так
if time_month in [9, 10, 11]:

Update: мне на мысль сошла идея запихнуть весь код выше в однострочный код. И что же я скажу.. мне это удалось) Для питонистов код ниже прочитать наверное адом будет.
import datetime
import time
import ctypes

while True: [[[[[[[ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0) if time_now >= 17 or time_now <= 7 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 12 <= time_now <= 13 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 8 <= time_now <= 9 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 14 <= time_now <= 16 else []] if time_month in [1,2,12] else [ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0)  if time_now >= 21 or time_now <= 5 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 12 <= time_now <= 17 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 6 <= time_now <= 12 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 18 <= time_now <= 20 else []] if time_month in [3, 4, 5] else [ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0)  if time_now >= 21 or time_now <= 4 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 13 <= time_now <= 17 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 5 <= time_now <= 12 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 18 <= time_now <= 20 else []] if time_month in [6, 7, 8] else [ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['night'], 0)  if time_now >= 17 or time_now <= 6 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['obed'], 0) if 11 <= time_now <= 13 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['morning'], 0) if 7 <= time_now <= 10 else ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper['evening'], 0) if 14 <= time_now <= 16 else []] if time_month in [9, 10, 11] else [], time.sleep(1800)] for time_month in [datetime.datetime.now().month]] for time_now in [datetime.datetime.now().hour]] for wallpaper in [{'night': wallpaper_place+'night.jpg', 'obed': wallpaper_place+'obed.jpg', 'morning': wallpaper_place+'morning.jpg', 'evening': wallpaper_place+'late_evening.jpg'}]]] for wallpaper_place in ['C:\\Users\\andriy\\Desktop\\wallpaper\\']]
Ответ написан
if time_month == 12 or 1 or 2:
или что 1 или что 2?
if time_month == 12 or time_month == 1 or time_month == 2:
Ответ написан
Комментировать
@alexbprofit
Junior SE
if time_month == 12 or 1 or 2:		#зима														
      
    if  17 <= time_now <= 7:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_night, 0) #смена обоев
    elif  12 <= time_now <= 13:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_obed, 0)
    elif  8 <= time_now <= 9:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_morning, 0)
    elif  14 <= time_now <= 16:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_evening, 0)

  elif time_month == 3 or 4 or 5:		#весна											
    
    if  21 <= time_now <= 5:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_night, 0)
    elif  12 <= time_now <= 17:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_obed, 0)
    elif  6 <= time_now <= 12:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_morning, 0)
    elif  18 <= time_now <= 20:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_evening, 0)

  elif time_month == 6 or 7 or 8:		#лето
    
    if  21 <= time_now <= 4:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_night, 0)
    elif  13 <= time_now <= 17:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_obed, 0)
    elif  5 <= time_now <= 12:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_morning, 0)
    elif  18 <= time_now <= 20:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_evening, 0)

  elif time_month == 9 or 10 or 11:	    #осень
    if  17 <= time_now <= 6:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_night, 0)
    elif  11 <= time_now <= 13:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_obed, 0)
    elif  7 <= time_now <= 10:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_morning, 0)
    elif  14 <= time_now <= 16:
      ctypes.windll.user32.SystemParametersInfoW(20, 0, wallpaper_evening, 0)


Как минимум так
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
у тебя как минимум не работают эти условия:
if 21 <= time_now <= 5:

if 17 <= time_now <= 6:

и т.д.

А это вообще бред:

if time_month == 12 or 1 or 2:
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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