Чего мне не хватает в этой программе расписания ретрансляции?

#python #automation #timer #user-input

#python #автоматизация #таймер #пользовательский ввод

Вопрос:

Я пытаюсь научить себя Python, и у меня возникли некоторые вопросы. Я понимаю общую идею, мне просто нужна помощь в ее точной настройке. Спасибо

 #imports
import RPi.GPIO as GPIO
import datetime
import time

#Relay 1 board number
R1 = 26
GPIO.setmode(GPIO.BCM)
GPIO.setup(R1, GPIO.OUT)
h_d = user_input

#start prompts
print("Light schedule")
time.sleep(2)
print("Input hours/day:")                       #Need command to request user input
print("Hours of light per day =", h_d)          #Missing something

#loop
try:
    while True:
        now = datetime.datetime.now().time()
        GPIO.output(R1,GPIO.LOW)
        if now.hour == 7:                        #Daily start time
            GPIO.output(R1, GPIO.HIGH)
            print("Lights ON @")                 #Need it to print only once per occurrence
            print(time.strftime("%-I:%M %p"))    #Something missing
        elif start_time   user_input
            GPIO.output(R1, GPIO.LOW)
            print("Lights OFF @")                #Need it to print only once per occurrence
            print(time.strftime("%-I:%M %p"))    #Something missing
    
finally:
    GPIO.cleanup()
 

Комментарии:

1. Что вы хотите, чтобы программа делала? Что происходит в данный момент при ее запуске?

2. Я хочу, чтобы программа спрашивала пользователя, сколько часов в день он хочет, чтобы свет был включен. Включение света всегда начинается в 7 утра и продолжается столько часов, сколько выберет пользователь, затем оно повторяется каждый день до остановки. Мне нужна помощь с запросом пользовательского ввода и другими небольшими изменениями, все они перечислены в примечаниях к коду.

3. Python используется input для получения входных данных и int изменения (преобразования) строки в целое число.

4. Кроме того, вы не хотите, чтобы ваша программа выполнялась все время, поэтому в цикле добавьте a sleep(60) для ожидания одной минуты между проверками.

5. elif start_time user_input эта строка, похоже, ничего не значит, я предполагаю, что вы хотели что-то вроде start_time user_input > now , однако это будет сложно реализовать. Вместо этого мы можем ограничить себя целым количеством часов и просто проверить это: now.hour == (7 user_input) % 24