【问题标题】:Imported DateTime but hour is not defined?导入日期时间但小时未定义?
【发布时间】:2021-08-27 22:04:56
【问题描述】:

我正在为我的一个客户做一个基本的闹钟项目,但我碰壁了。我已导入 datetime 模块,但在我的函数中的“小时”和“秒”上出现名称错误。对可能发生的事情有任何想法吗?


import tkinter
import datetime
import time
import winsound

def alarm(set_alarm_timer):
    while True:
        time.sleep(1)
        current_time = datetime.datetime.now()
        now = current_time.strftime("%H:%M:%S")
        date = current_time.strftime("%d/%m/%y")
        print("The Set Date is: ", date)
        print(now)
        if now == set_alarm_timer:
            print("Time to Wake up")
        winsound.PlaySound("sound.wav", winsound.SND_ASYNC)
        break


def actual_time():
    set_alarm_timer = f"{hour.get()}:{min.get()}:{second.get()}"
    alarm(set_alarm_timer)

actual_time()

添加由于请求而得到的错误:

Traceback(最近一次调用最后一次):文件 “/home/will/Documents/python_projects/alarmclock.py”,第 28 行,在 actual_time() 文件“/home/will/Documents/python_projects/alarmclock.py”,第 25 行,在 实际时间 set_alarm_timer = f"{hour.get()}:{min.get()}:{second.get()}" NameError: name 'hour' is not defined

【问题讨论】:

  • date = cureent_time.strftime("%d/%m/%y") 有错字。此外,添加您得到/看到的实际错误以获得更好的答案
  • 是什么让您认为应该定义hour
  • 试试set_alarm_timer = f"{datetime.datetime.now().hour}:{datetime.datetime.now().minute}:{datetime.datetime.now().second}"。使用from datetime import datetime 导入日期时间可能是一个想法,然后您可以将datetime.datetime.now() 等换成datetime.now()

标签: python python-3.x datetime


【解决方案1】:

我认为您的误解是导入datetime 会以某种方式神奇地创建变量hourminsecond。事实并非如此。

【讨论】:

    【解决方案2】:

    您收到此 NameError 是因为您尝试访问尚不存在的变量(没有为这些名称分配任何内容)。

    actual_time 内的第一行,您在 f 字符串中使用名称 hourminsecond,因此,python 尝试查找这些变量,因为没有已分配给他们,它会引发此错误。

    不过,min 不会出现错误,因为已经为该名称分配了一些东西,即 built-in function min

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多