Python 函数返回以前的值
我想让用户输入一个数字,检查它的有效性并返回它。如果数字无效,我希望重复输入过程。但是,如果我键入:Python 函数返回以前的值,python,callback,return,Python,Callback,Return,我想让用户输入一个数字,检查它的有效性并返回它。如果数字无效,我希望重复输入过程。但是,如果我键入: “5b” “50.4” 该函数不返回50.4。相反,当执行第一个函数调用的剩余部分时,它返回5.0。如何解决上述问题,以仅获取50.4 def inputGoal (): goalFiltered = "" print ('1: ' + str(goalFiltered)) goal = input("Input number: ") for char in g
“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',',','.']
如果我正确理解您的问题,我认为您可以这样做:
while True:
ask = input("Input the number:\t") #The \t just puts a tab so it looks nice
if ask == float(ask):
break
else:
print("The number is incorrect. Try again.")
continue
如果我正确理解您的问题,我认为您可以这样做:
while True:
ask = input("Input the number:\t") #The \t just puts a tab so it looks nice
if ask == float(ask):
break
else:
print("The number is incorrect. Try again.")
continue
在递归调用中,使用
return inputGoal()
而不仅仅是inputGoal()
@smarx谢谢,它可以工作!请注意,在引入return
之前,先解释一下为什么这会阻止剩余部分执行,以及为什么剩余部分会被执行。请写一个正式的答案,这样我就可以为将来的读者接受了,因为您没有返回值
,代码只是在执行递归调用(并抛出其返回值)后继续执行。完成循环后,它运行goalFiltered=float(goalFiltered)
和return goalFiltered
,因此您得到了将float
应用于与列表匹配的任何字符的结果。在递归调用中,使用return inputGoal()
而不仅仅是inputGoal()
@smarx谢谢,它可以工作!请注意,在引入return
之前,先解释一下为什么这会阻止剩余部分执行,以及为什么剩余部分会被执行。请写一个正式的答案,这样我就可以为将来的读者接受了,因为您没有返回值
,代码只是在执行递归调用(并抛出其返回值)后继续执行。循环结束后,它运行goalFiltered=float(goalFiltered)
和return goalFiltered
,这样就得到了将float
应用于与列表匹配的任何字符的结果。continue
在这里似乎没有任何作用。continue
在这里似乎没有任何作用。