Python时间问候程序

新手上路,请多包涵

我正在尝试创建一个基于一天中的时间来吸引用户的程序,但是当我运行我的代码时,我得到了这个错误:不可排序的类型:str() < int()

我不认为我这样做是正确的,我想不出更好的方法,那么编写这个程序的更好方法是什么???

这是我的代码:

 import time
currentTime = time.strftime('%H:%M')

if currentTime.hour < 12 :
     print('Good morning')
if currentTime.hour > 12 :
     print('Good afternoon')
if currentTime.hour > 6 :
     print('Good evening')

原文由 Nathan Siafa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 645
2 个回答

看起来您想使用代表时间的对象。我推荐 datetime 模块。

此外,您的代码假定计算机会猜测您输入的时间是上午还是下午。您必须使用一个小时的 18 来表示下午 6:00。

 >>> import datetime
>>> currentTime = datetime.datetime.now()
>>> currentTime.hour
0
>>> if currentTime.hour < 12:
...     print('Good morning.')
... elif 12 <= currentTime.hour < 18:
...     print('Good afternoon.')
... else:
...     print('Good evening.')
...
Good morning.

原文由 TigerhawkT3 发布,翻译遵循 CC BY-SA 3.0 许可协议

我看到这里列出的答案很长,所以为需要它的人创建了一个更简洁的版本(即使这篇文章已有 2 年多了)。然而,这个顶级版本可能会破坏 PEP-8 中概述的格式,因为第三行超过 80 个字符 (92),所以请随意使用更长的版本。

 import datetime
hour = datetime.datetime.now().hour
greeting = "Good morning" if 5<=hour<12 else "Good afternoon" if hour<18 else "Good evening"

然后在任何需要的地方使用它……

 print("{}!".format(greeting))

…或为了可读性而分解…

 import datetime
now = datetime.datetime.now()
hour = now.hour

if hour < 12:
    greeting = "Good morning"
elif hour < 18:
    greeting = "Good afternoon"
else:
    greeting = "Good night"

print("{}!".format(greeting))

一个示例用例是说一个随机的“再见”以使程序看起来更逼真。这会做这样的事情……

 import random, datetime
hour = datetime.datetime.now().hour
greeting = "Have a nice day" if hour<20 else "Good night"
print(random.choice(["I look forward to our next meeting!",greeting+"!"]))

原文由 Adil 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题