2015-08-16 38 views
1

我試圖創建一個巨星在一天的時間用戶基礎的程序,但是當我運行我的代碼,我得到這個錯誤: unorderable類型:STR()< INT()Python的時間問候程序

我不認爲我是這樣做的正確方法,我不能找出一個更好的方式來做到這一點,所以是更好的方式來寫這個程序?

這裏是我的代碼:

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') 
+0

你確定這是你正在使用的代碼?由於該屬性不存在,我從'currentTime.hour'中得到一個錯誤。我的Python上的'time.strftime'返回一個字符串,所以沒有時間特定的屬性不會讓我感到驚訝。你在尋找'datetime.now'還是類似的東西? – Blckknght

回答

4

它看起來像你想處理代表時間的對象。我推薦datetime模塊。

此外,您的代碼假定計算機會猜測您輸入的小時數是AM還是PM。您將不得不使用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. 
+0

非常感謝;它完美的作品 –

2

有sin't在字符串變量稱爲hour的屬性。

import time 
currentTime = int(time.strftime('%H:%M').split(':')[0]) 

if currentTime < 12 : 
    print('Good morning') 
if currentTime > 12 : 
    print('Good afternoon') 
if currentTime > 6 : 
    print('Good evening') 
+0

謝謝。我喜歡將當前時間轉換爲整數的方式,但我不明白這一部分:.split(':')[0]) –

+1

這是根據':'分割結果,然後得到0退貨清單索引。 –

1

我看到這裏列出的答案是相當長所以創造了那些需要它(即使這個職位是超過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 5 <= hour < 12: 
    greeting = "Good morning" 
elif hour < 18: 
    greeting = "Good afternoon" 
else: 
    greeting = "Good evening" 

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+"!"])) 
+0

謝謝。看起來不錯。 –