Der Fehler „ 'schweben' Objekt Kein Attribut 'split' " schlägt vor, dass type(date) == float
in Ihrem Beispiel bedeutet, dass Sie versuchen, Python 3-Code mit Python 2-Interpreter auszuführen. input()
wertet seine Eingabe als Python-Ausdruck aus, anstatt sie als Zeichenfolge zurückzugeben.
Um das Datum als String auf Python 2, verwenden raw_input()
statt input()
:
date_string = raw_input("Enter date mm/dd/yyyy: ")
Um es auf beiden Python funktioniert 2 und 3, am Anfang des Skripts hinzu:
try: # make input() and raw_input() to be synonyms
input = raw_input
except NameError: # Python 3
raw_input = input
Wenn Sie das alte Python 2 input()
Verhalten benötigen; Sie könnten eval()
explizit aufrufen.
das Eingangsdatum bestätigen, könnten Sie use datetime.strptime()
und ValueError
fangen:
from datetime import datetime
try:
d = datetime.strptime(date_string, '%m/%d/%Y')
except ValueError:
print('wrong date string: {!r}'.format(date_string))
.strptime()
garantiert, dass das Eingangsdatum ansonsten gilt ValueError
angehoben wird. Bei Erfolg funktionieren d.year
, d.month
, d.day
wie erwartet.
setzen sie alle zusammen (nicht getestet):
#!/usr/bin/env python
from datetime import datetime
try: # make input() and raw_input() to be synonyms
input = raw_input
except NameError: # Python 3
raw_input = input
while True: # until a valid date is given
date_string = raw_input("Enter date mm/dd/yyyy: ")
try:
d = datetime.strptime(date_string, '%m/%d/%Y')
except ValueError: # invalid date
print('wrong date string: {!r}'.format(date_string))
else: # valid date
break
# use the datetime object here
print("Year: {date.year}, Month: {date.month}, Day: {date.day}".format(date=d))
Asking the user for input until they give a valid response See.
könnten Sie .split('/')
anstelle von .strptime()
, wenn Sie müssen:
month, day, year = map(int, date_string.split('/'))
Es überprüft nicht, ob die Werte ein gültiges Datum im gregorianischen Kalender bilden.
Ich verstehe Ihre Eingabedaten oder Ihre Fehlermeldung nicht. Bitte geben Sie ein Muster an. – TigerhawkT3
>>> Datum = 3/2/2016 >>> date.split ('/') Traceback (jüngste Aufforderung zuletzt): File "" Linie 1 in date.split ('/ ‚) Attribute:‚schweben‘Objekt hat kein Attribut‚split‘ >>> –
ich glaube, es sollte date = sein‘ 3/2/Jahr 2016' Das Problem ist, dass python dividieren und die Schaffung der Schwimmer tut 0,000744047619047619 anstelle der Eingabe als Zeichenfolge – user1462442