если условие не работает должным образом в программе, где я указал другое условие if - PullRequest
0 голосов
/ 15 апреля 2020

Я сделал скрипт в прошлый раз. это своего рода тревога и книга рекордов. Но существует проблема. когда я добавлю второе условие if в этом. это не работает нормально. даже первое условие не запускается.

посмотрите сами, если вы удалите второе условие из l oop, оно будет работать нормально. Я не знаю, почему это происходит.

Вот мой код:

import pygame
import time

#function for music   
def playmusic():
    pygame.init()
    pygame.mixer.music.load("/root/Desktop/vs/corona_go.mp3")
    pygame.mixer.music.play(-1)

#time we have is  9am to 5pm: 8hrs
time_hr = 8
print("\n########### WE have eight hours of works############\n")




water_count = 60

t = time.localtime()
currenttime = time.strftime("%H:%M:%S", t)    



def water_time():  

    while True:
        start = time.time()   
        end = time.time()
        elapsed = end - start
        #mins and hrs
        hours = elapsed//3600
        elapsed = elapsed - 3600*hours
        minute = elapsed//60


        if minute == 1:
            print("Its time to go and Drink WATER\n")
            playmusic()
            a = input("\nPlease type \"done\" do stop it.\n")
            if a == "done" or "Done" or "DONE":
                print("ok, You have switched off the alarm\n")
                try:
                    f = open("logs/waterlog.txt","r+")
                    f.append(f"water was drunk by Programmer at {currenttime}\n and amount was 0.5 liter")
                except:
                    f = open("logs/water.txt","w")
                    f.write(f"water was drunk by Programmer at {currenttime}\n")
            start = time.time() 
            elapsed = end - start
        #mins and hrs
            hours = elapsed//3600
            elapsed = elapsed - 3600*hours
            minute = elapsed//60
        if minute == 2:
            print("its here")
water_time()

1 Ответ

0 голосов
/ 15 апреля 2020

if a == "done" or "Done" or "DONE": всегда будет иметь значение true. Вместо этого вы можете написать if a in {"done", "Done", "DONE"} или на самом деле короче и более общее: if a.lower() == "done":.

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