2016-11-16 26 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 
は、現在の年からなぜあなたは物事を簡単にいけないとだけ(年のみ)、年齢を引くだけで dir(age)

0

を行うageようなオブジェクトの属性とメソッドを表示するには?現在の年だけを取得する方法は、以下を参照してください:

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