사용자에게 몇 가지 값을 입력하도록 요청하는 GUI가 있습니다. 사용자가 각각의 입력 값을 입력 한 경우, I는 사용자 입력이 존재하고 정수로 구성되어 있는지 확인하는 더 파이썬적인 방법
경우에 체크 제
- : 사용자 데이터를 전송하면 좀 검증 할 많은 것을 반복하지 않으려 고 노력했지만, 검증의 두 번째 부분은 해킹과 비슷해 보입니다. 유효성 검사의 첫 번째 부분에서와 같이 모든 것을 철자로 작성하는 것이 부족한이 구형을 재 작성하는 더 평범한 방법이 있습니까? 입력이 포함되어있는 경우
if self.start.GetValue().strip().isdigit(): pass
isdigit()
반환 입력이 빈 문자열 두 경우 모두에 대한False
, 그리고 :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))
이것은 좋은 옵션처럼 보이지만 데이터가 누락되어 있는지 ("시작 값을 입력하십시오") 대 데이터가 존재하지만 정수가 아닌지에 따라 다른 오류 메시지를 표시하는 방법이 없습니다 (" 시작 값은 정수 여야합니다 "). 옳은? – BioGeek
@BioGeek : 사실, 만약 당신이 그 기능을 원한다면, 나는 두 개의'if' 문 또는'try ... except' 문으로 갈 것입니다. 어느 것이 든 완벽하게 파이썬 적입니다. –
@BioGeek 제 편집을보세요. –