【发布时间】:2020-11-18 17:15:21
【问题描述】:
我的错误处理工作有效,但出了点问题。
import datetime
def d(date):
return datetime.datetime.strptime(date, "%d/%m/%Y")
def test(prompt):
while True:
try:
value = input(prompt)
a = d(value)
break
except ValueError or TypeError:
print("Wrong format")
return a
b = test("Write date")
def func():
a = d(b)
if d('1/12/2020') <= a <= d('28/02/2021'):
print("ok")
else:
print("no")
函数()
当我将b 放入另一个函数时,我得到:
return datetime.datetime.strptime(datumet, "%d/%m/%Y")
TypeError: strptime() argument 1 must be str, not datetime.datetime.
但如果没有错误处理,它就可以工作。代码有什么问题?
【问题讨论】:
-
错误显然来自
func,您没有显示给我们,所以我们无法帮助您。无论哪种方式,datumet根据错误已经是datetime,所以你不需要调用strptime -
我会告诉你功能
-
你觉得哪里不对?
-
您需要在某处为
TypeError添加错误处理——在d()函数本身或尝试使用它的任何地方。 -
@martineau,我放置了:除了 ValueError 或 TypeError(在测试函数中),但它不起作用。
标签: python python-3.x for-loop if-statement while-loop