2016-11-16 104 views
-2

我想製作一個計算器,確定用戶是否可以在輸入出生日期後進行投票。我曾嘗試使用其他一些帖子來獲取我目前的位置,但現在我被卡住了。Python投票計算器

我有這樣的錯誤:

TypeError: unorderable types: datetime.timedelta() >= int() 

我的代碼是:

from datetime import date 

print("Please enter your birthday") 
bd_y = input("Year: ") 
bd_m = input("Month (1-12): ") 
bd_d = input("Date: ") 

now = date.today() 

birthdate = date(int(bd_y), int(bd_m), int(bd_d)) 


age = now-birthdate 

print("Your age is", age) 

if age >= 6570: 
    print("You can vote!") 
else: 
    print("Your not old enough! Sorry!") 

任何幫助,您可以給將是巨大的,謝謝!

回答

2

age是一個Python datetime.timedelta,無法直接與int進行比較。

age.days是天數的整數表示。這可以與另一個整數進行比較。

值得注意的是,這不包括也不包括閏年,也不是實際確定您是否可以投票,因爲它需要現在的時間,而不是您的年齡在某個截止日期。改進的其他途徑。

0

試試這個:從日期時間進口日期

print("Please enter your birthday") 
bd_y = input("Year: ") 
bd_m = input("Month (1-12): ") 
bd_d = input("Date: ") 

now = date.today() 

birthdate = date(int(bd_y), int(bd_m), int(bd_d)) 


age = now-birthdate 

print("Your age is", age) 

if age.days >= 6570: 
    print("You can vote!") 
else: 
    print("Your not old enough! Sorry!") 
0

age 是一個對象:

In [256]: age 
Out[256]: datetime.timedelta(10188) 

要獲得總秒數,例如:

In [264]: age.total_seconds() 
Out[264]: 880243200.0 

要獲得天:

In [269]: age.days 
Out[269]: 10188 

看到這樣age對象的屬性和方法只是做dir(age)

0

你爲什麼不從當年使事情變得簡單,只是減去年齡(僅一年)?請參閱下面如何讓只有當年:

import datetime 

print("Please enter your birthday") 
bd_y = input("Year: ") 
bd_m = input("Month (1-12): ") 
bd_d = input("Date: ") 

currentyear = datetime.date.today().year 

birthdate = bd_y 


age = currentyear - int(bd_y) 

print("Your age is", age) 

if age >= 6570: 
    print("You can vote!") 
else: 
    print("Your not old enough! Sorry!") 
0

的問題是你的變量age不只是天的整數倍。請參閱here以瞭解有關數據類型的更多信息。

解決您的問題是選擇正確的屬性。長話短說:

if age.days >= 6570:

應該解決您的眼前問題。此外,使用變量來表示6570或者至少以某種方式清楚該數字是什麼(18年* 365天)將是一種很好的做法。

+1

'type(age.days)= ',所以類型轉換不是必需的。 – TemporalWolf