检查unicode是数字还是小数的最有效方法是什么?我知道我可以做各种if语句:
if unicode.isdigit(self.initial_bet.text) and unicode.isdigit(self.initial_odds.text)...
unicode可以是两个类型,两个十进制类型,两个数字类型或两者的组合,是否有更好的方法来检查除了许多if语句以外的其他方法?
Pseudocoe:
如果a是数字而b是数字: return func
elif a是小数,b是小数: return func
elif a是一个数字,b是一个小数: return func
依旧......
否则 做别的事
答案 0 :(得分:4)
如果所有输入都需要是小数或数字,则以下内容将起作用:
conds = [unicode.isdigit, unicode.isdecimal]
check = lambda v: any(f(v) for f in conds)
vals = [self.initial_bet.text, self.initial_odds.text]
if all(map(check, vals)):
return func
# do something else
这适用于任意数量的输入和任意数量的条件,例如每个输入必须满足至少一个条件。
另外,似乎unicode.isdigit是unicode.isdecimal功能的超集,因此任何小数都应该是一个数字 - 大部分区别在于各种unicode脚本,但是对于ASCII范围,函数应该是有相同的行为。
答案 1 :(得分:0)
我不完全明白你在做什么,但是你尝试过使用isinstance(值,类型)。
if isinstance(a, int) and isinstance(b, float):
return foo
res = [i for i in map(lambda x: isinstance(x, int) or isinstance(x, float),[.5, 'a', 3, 4, 5])]