我有一些条件/比较存储为字符串。我如何检查这些条件?下面给出一个非常简单的例子。我想要条件作为字符串,因为我想打印它们以防它们失败。
我想我需要为此制作一个解析器,但为一件小事制作一个完整的 Python 解析器将是一个非常愚蠢的想法。有什么想法可以做什么?
def rev_num(num):
if num < 0:
return -int(str(-num)[::-1])
else:
return int(str(num)[::-1])
conditions = ['rev_num(-34) != -43', 'rev_num(34) != 43']
for i in conditions:
if something-needs-to-come-here(i):
print(i)
我知道这是一个奇怪的想法,但如果可以的话,请附上。
我给 user2357112 造成了一些困惑。他指出我正在尝试做的事情叫做unit-testing
. 感谢那。
为避免进一步混淆,我将添加我正在尝试改进的代码。我要做的更改是在函数中打印条件,correctness
使其返回False
。
def rev_num(num):
if num < 0:
return -int(str(-num)[::-1])
else:
return int(str(num)[::-1])
if __name__ == "__main__":
from timeit import Timer
import random
def correctness(f):
print("Correctness Test")
if f(-34) != -43 or f(34) != 43:
return False
print('Correct')
print('-----------')
return True
def timing(f, times):
def test1(f):
f(random.randint(1, 1000))
def test2(f):
f(random.randint(100000, 1000000))
print("Timing Test")
print(Timer(lambda: test1(f)).timeit(number = times))
print(Timer(lambda: test2(f)).timeit(number = times))
print('-----------')
def tests(f,times):
print(f.__name__)
print('-----------')
if correctness(f) is True:
timing(f, times)
repeat = 100000
tests(rev_num, repeat)