2016-11-16 6 views
-2

Ich versuche einen Taschenrechner zu erstellen, der bestimmt, ob der Benutzer nach Eingabe seines Geburtsdatums abstimmen kann. Ich habe versucht, einige andere Posts zu verwenden, um zu bekommen, wo ich zurzeit bin, aber ich bin jetzt festgefahren.Python Voting Calculator

Ich habe diesen Fehler:

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

Und mein Code:

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!") 

Jede Hilfe Sie wäre toll geben können, danke!

Antwort

2

age ist ein Python datetime.timedelta und kann nicht direkt mit einem int verglichen werden.

age.days ist die Ganzzahldarstellung der Anzahl der Tage. Dies kann mit einer anderen Ganzzahl verglichen werden.

Es ist erwähnenswert, dass dies Schaltjahre weder berücksichtigt noch berücksichtigt, noch bestimmt es tatsächlich, ob Sie wählen können, da es die aktuelle Zeit und nicht Ihr Alter zu einem bestimmten Stichtag benötigt. Zusätzliche Wege für Verbesserungen.

0

Versuchen Sie folgendes: von Datetime-Importdatum

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 ist ein Ziel:

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

die Gesamt Sekunden zu erhalten, zum Beispiel:

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

Um die Tage:

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

Um die Attribute und Methoden eines Objekts wie age tun nur dir(age)

0

Warum Sie nicht zu sehen, die Dinge einfach machen und nur das Alter (Jahr nur) aus dem laufenden Jahr subtrahieren? Im folgenden sehen Sie, wie laufende Jahr nur erhalten:

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

Das Problem ist Ihre Variable age ist nicht einfach die ganze Zahl von Tagen. Weitere Informationen zum Datentyp finden Sie unter .

Die Lösung für Ihr Problem ist die Auswahl des richtigen Attributs. Lange Rede kurzer Sinn:

if age.days >= 6570:

sollte Ihr unmittelbares Problem beheben. Es wäre auch eine gute Übung, Variablen zu verwenden, um 6570 darzustellen oder zumindest zu verdeutlichen, um welche Zahl es sich handelt (18 Jahre * 365 Tage).

+1

'type (age.days) = ', daher ist Typisierung nicht notwendig. – TemporalWolf