|
0 / 0 / 0
Регистрация: 09.12.2019
Сообщений: 5
|
|
Отсчет времени от одной функции в другую12.12.2022, 20:51. Показов 6138. Ответов 3
Метки нет (Все метки)
Есть 2 функции в первой отсчитывается начальное время, во второй конечное время, также нужно во второй узнать потраченное время от начала до конечного. Примерно так:
def start(self): self.start_time = datetime.now() return f'Начало {self.name} положено.' def pass_quest(self): self.end_time = datetime.now() completion_time = (self.start_time - self.end_time) return f'Квест {self.name} окончен. Время выполнения квеста {completion_time}' При попытке запустить код, терминал не видит одно из свойств и не может выполнить вычитание TypeError: unsupported operand type(s) for -: 'NoneType' and 'datetime.datetime' Подскажите как исправить
0
|
|
| 12.12.2022, 20:51 | |
|
Ответы с готовыми решениями:
3
можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать? Переместить запись из одной ячейки в другую по истечению времени
|
|
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
|
||||||
| 12.12.2022, 21:00 | ||||||
|
lashok, Может тебе проще записывать время старта не в самой функции, а до ее вызова? И время окончания не в самой функции, а после ее вызова в основном коде и тогда проблем не будет.
Добавлено через 3 минуты Типа такого или сохраняй и храни время в атрибутах класса.
0
|
||||||
|
0 / 0 / 0
Регистрация: 09.12.2019
Сообщений: 5
|
|
| 12.12.2022, 21:07 [ТС] | |
|
Alexarh, попробую
Добавлено через 6 минут Это не то, попробую полную задачу предоставить, мне интересно именно задача со временем. ------------------------------------------------------------------------------------------------------------------------- Добавьте в класс Quest два метода: accept_quest() — чтобы игрок мог взять квест; pass_quest() — чтобы игрок мог завершить квест. Чтобы зафиксировать время начала и завершения квеста, в конструктор класса Quest добавьте свойства start_time и end_time. Определите их начальные значения как None. В метод accept_quest() в свойство start_time запишите текущее время. Метод должен вернуть фразу 'Начало {название_квеста} положено.' В метод pass_quest() в свойство end_time тоже запишите текущее время. Также в этом методе объявите переменную completion_time и посчитайте в ней разницу между временем завершения и начала квеста. Метод должен вернуть фразу 'Квест {название_квеста} окончен. Время выполнения квеста: {разница_между_началом_и_окончанием_квес та}'. Также добавьте в оба метода ограничения: Для accept_quest(): если при вызове метода для объекта класса в свойстве end_time уже записано значение, то нужно вернуть строку 'С этим испытанием вы уже справились.'. Игрок уже выполнил квест, вызвать его повторно нельзя. Для pass_quest(): если при вызове метода у объекта квеста свойство start_time равно None, должна вернуться строка 'Нельзя завершить то, что не имеет начала!'. Нельзя завершить квест, который игрок не начал выполнять. ------------------------------------------------------------------------------------------------------------------------- Вот как выглядит то на чем я остановился, я не понимаю как правильно вычесть время окончание квеста от начала квеста from datetime import datetime import time class Quest: def __init__(self, name, description, goal, start_time = None, end_time = None): self.name = name self.description = description self.goal = goal self.start_time = start_time self.end_time = end_time def accept_quest(self): self.start_time = datetime.now() return f'Начало {self.name} положено.' def pass_quest(self): self.end_time = datetime.now() completion_time = (self.start_time - self.end_time) return f'Квест {self.name} окончен. Время выполнения квеста {completion_time}' quest_name = 'Сбор пиксельники' quest_goal = 'Соберите 12 ягод пиксельники.' quest_description = ''' В древнем лесу Кодоборье растёт ягода "пиксельника". Она нужна для приготовления целебных снадобий. Соберите 12 ягод пиксельники.''' new_quest = Quest(quest_name, quest_description, quest_goal) print(new_quest.pass_quest()) print(new_quest.accept_quest()) time.sleep(3) print(new_quest.pass_quest()) print(new_quest.accept_quest())
0
|
|
|
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
|
|||||||||||
| 12.12.2022, 21:16 | |||||||||||
Сообщение было отмечено lashok как решение
Решение
37 строка, ты запускаешь сразу метод окончания квеста, Quest.start_time = None в этот момент.
Вот так надо было:
0
|
|||||||||||
| 12.12.2022, 21:16 | |
|
Помогаю со студенческими работами здесь
4
Дублирование, передача значений из одной формы в другую в реальном времени
COMET чат и можно ли записывать данные c одной страницы на другую в реальном времени Перенос данных из одной таблицы в другую по нажатию кнопки с добавлением текущего времени в последней Как передать переменную из одной функции в другую функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|