我有一个GUI,我要求用户输入一些值。当用户提交数据时,我会进行一些验证:
尽量不重复我的想法,但验证的第二部分看起来更像是一个黑客。有没有一种更像Python式的重写方式,而不是像验证的第一部分那样把所有的东西都拼出来?在
errors = []
# 1) check if values exist
if not self.startInput.GetValue():
errors.append("Please provide a start")
if not self.stopInput.GetValue():
errors.append("Please provide a stop")
if not self.valueInput.GetValue():
errors.append("Please provide a value")
# 2) check if values are integers
try:
self.start = int(self.startInput.GetValue())
self.stop = int(self.stopInput.GetValue())
self.value = int(self.valueInput.GetValue())
except ValueError as err:
tb = traceback.format_exc()
func = re.search('self\.(.*) =', tb).groups()[0]
errors.append("Value for {0} needs to be an integer.".format(func))
if errors:
raise RuntimeError('\n'.join(errors))
如果在名为
inputs
的字典中有这些输入,则可以执行以下操作:由于您检查的是整数,而不是浮点,因此您可以简单地执行以下操作:
对于输入为空字符串和输入包含非数字的两种情况,}。在
isdigit()
返回{如果要发送错误分配的特定错误:
^{pr2}$我认为
try: ... except
完全是Python。我会使用helper函数,而不是搜索错误消息get_int_of_name(name, value, error)
,如果需要,该消息将返回int和update错误:相关问题 更多 >
编程相关推荐