«Не понимаю, в чем проблема в этом коде» - PullRequest
0 голосов
/ 08 октября 2019

Хотя цикл должен идти в операторе else. Но он всегда становится Истиной, когда ему было 21, оператор не пошел иначе,

import time
from datetime import datetime as dt

hosts_temp="hosts"
hosts_path=r"C:\WINDOWS\System32\drivers\etc\hosts"


redirect="127.0.0.1"
website_list=["www.facebook.com", "facebook.com","www.youtube.com", "youtube.com"]

while True:
    if dt(dt.now().year,dt.now().month,dt.now().day,16) < dt(dt.now().year,dt.now().month,dt.now().day,18):
        print("Working Hours,,,,,,,,.......!!")
        with open(hosts_temp,"r+") as file:
            content=file.read()
            for websites in website_list:
                if websites in content:
                    pass
                else:
                    file.write(redirect+"       "+websites+"\n")
    else:
        with open(hosts_temp,"r+") as file:
            content=file.readlines()
            file.seek(0)
            for line in content:
                if not any(websites in line for websites in website_list):
                    file.write(line)
            file.truncate()
        print("Fun time.......")
    time.sleep(5)

Я ожидал, что он перейдет к оператору else

1 Ответ

0 голосов
/ 08 октября 2019

В python цикл while имеет следующий синтаксис:

while (condition):

У вас установлено условие "true";следовательно, это всегда будет правдой. Вы знаете, что я имею в виду?

Вот классический пример:

i = 1
while i < 6:
  print(i)
  i += 1

Это печатает:

> 1
> 2
> 3
> 4
> 5

Поскольку условие (i <6) только вернопока мне не станет 6. </p>

...