Python

Оцените код на python, можно ли его назвать плохим?

import time
from threading import Thread

def GoTime():
second = 0
minets = 0
hours = 0
days = 0

print("Здравствуйте!")
time.sleep(2)
print("Я запускаю таймер через")
time.sleep(1)
print("3")
time.sleep(1)
print("2")
time.sleep(1)
print("1")
time.sleep(1)
print("Поехали!")
while True:
second += 1
time.sleep(1)
if second == 60:
second = 0
minets += 1
if minets == 60:
minets = 0
hours += 1
if hours == 24:
hours = 0
days += 1
if days != 0:
print(days, ":", hours, ":", minets, ":", second)
if hours != 0:
print(hours, ":", minets, ":", second)
if minets != 0:
print(minets, ":", second)
if minets == 0:
print(second)

Thread(target=GoTime).start()
В целом, код работает, но есть несколько моментов, которые можно улучшить:

1. Опечатки: В коде есть опечатки в названиях переменных, например minets вместо minutes.
2. Форматирование: Код не соответствует стандартам форматирования PEP 8 для Python. Например, отступы должны быть равны 4 пробелам, а не 1.
3. Структура: Код можно сделать более читаемым и понятным, если разбить его на несколько функций и использовать классы для хранения состояния таймера.
4. Обработка ошибок: В коде нет обработки ошибок или исключений, которые могут возникнуть во время выполнения.

Вот улучшенная версия:
 import time 
from threading import Thread

class Timer:
def __init__(self):
self.seconds = 0
self.minutes = 0
self.hours = 0
self.days = 0

def start(self):
print("Здравствуйте!")
time.sleep(2)
print("Я запускаю таймер через")
time.sleep(1)
print("3")
time.sleep(1)
print("2")
time.sleep(1)
print("1")
time.sleep(1)
print("Поехали!")

while True:
self.seconds += 1
time.sleep(1)
if self.seconds == 60:
self.seconds = 0
self.minutes += 1
if self.minutes == 60:
self.minutes = 0
self.hours += 1
if self.hours == 24:
self.hours = 0
self.days += 1

self.display_time()

def display_time(self):
if self.days != 0:
print(f"{self.days} : {self.hours} : {self.minutes} : {self.seconds}")
elif self.hours != 0:
print(f"{self.hours} : {self.minutes} : {self.seconds}")
elif self.minutes != 0:
print(f"{self.minutes} : {self.seconds}")
else:
print(f"{self.seconds}")

timer = Timer()
Thread(target=timer.start).start()
МС
Максим Семеновский
25 860
Лучший ответ
Да, можно. Код переусложнён и ошибочен. Если у тебя 1 день, 2 часа, 3 минуты, 4 секунды, то выведется 4 строки:
 1 : 2 : 3 : 4
2 : 3 : 4
3 : 4
4
Всё можно сделать намного короче:
 def GoTime():
timer = 0
print('Здравствуйте')
time.sleep(2)
for text in ('Я запускаю таймер через', '3', '2', 1'):
print(text)
time.sleep(1)
print('Поехали')
while True:
time.sleep(1)
timer += 1
print(*(timer // 86400, timer // 3600 % 24, timer // 60 % 60, timer % 60)[(timer < 86400) + (timer < 3600) + (timer < 60) :], sep=' : ')
Данный код на Python реализует простой таймер, который отсчитывает время в секундах, минутах, часах и днях.

Оценка кода зависит от его целей и контекста использования. В целом, код выполняет свою задачу и работает корректно. Однако, с точки зрения структуры и стиля программирования, есть несколько замечаний:
- Отсутствует документация или комментарии, которые объясняли бы, что делает каждая часть кода и как именно его использовать.
- Имена переменных ("second", "minets", "hours", "days") содержат опечатку, они должны быть написаны с английскими словами или использованы более понятные обозначения.
- Используется бесконечный цикл while True, но нет возможности остановить его или условия для его завершения.
- Вывод времени происходит в различных форматах на основе условных операторов. Можно использовать форматирование строк для более чистого и ясного кода.

В целом, код может работать для простого таймера, но для его улучшения и поддержки рекомендуется добавить комментарии и документацию, исправить опечатки, добавить возможность остановки цикла, а также использовать форматирование строк для вывода времени.
Valentin Malkov глупый чатжпт