0
사용자 입력을 숫자로 가져 와서 유효성을 확인하고 반환하려고합니다. 번호가 유효하지 않으면 입력 과정을 반복하고 싶습니다. 내가 입력하지만 경우 :함수는 이전 값을 반환합니다.
"5b"
"50.4"
기능은 50.4
를 반환하지 않습니다. 대신 나머지는 첫 번째 함수 호출이 실행될 때 5.0
을 반환합니다. 위의 문제를 해결하면 50.4
만받을 수 있습니까?
def inputGoal():
goalFiltered = ""
print ('1: ' + str(goalFiltered))
goal = input("Input number: ")
for char in goal:
matched = False
for sign in comparator:
if (sign == char):
matched = True
if (char != ','):
goalFiltered += sign
elif (char == ','):
goalFiltered += '.'
if (matched == False):
print ("Please repeat input, valid characters are: 0 1 2 3 4 5 6 7 8 9 , .")
inputGoal()
#return
goalFiltered = float(goalFiltered)
return (goalFiltered)
비교기 변수는 다음과 같습니다
comparator = ['0','1','2','3','4','5','6','7','8','9',',','.']
은 (inputGoal을 반환'사용)'대신'inputGoal()'을 사용합니다. – smarx
@smarx ** 감사합니다. 작동합니다! ** 설명하는 마음, 왜 이것이 ** 나머지를 실행하지 못하게하고, 나머지는 왜 돌아가는 지, 돌아가는 이유는 무엇입니까? 공식 응답을 써주십시오. 이후 독자를 위해 받아 들일 수 있습니다. – Alexander
'return'이 없으므로, 코드는 재귀 호출을 수행 한 후에도 실행을 계속합니다 (그리고 반환 값을 던집니다). 일단 루프를 끝내면'goalFiltered = float (goalFiltered)'와'return goalFiltered'를 실행 했으므로 목록에있는 모든 문자에'float'을 적용한 결과를 얻었습니다. – smarx