Python While循环未返回所需值

Python While循环未返回所需值,python,python-3.x,while-loop,return,conditional,Python,Python 3.x,While Loop,Return,Conditional,最近刚开始学习python,遇到了一个奇怪的问题。我创建此函数是为了确保用户输入的数字大于零: def numcheck(value,variable): while value <= 0: print('The' +str(variable) + 'must be greater than zero! ') value = float(input('Please enter a positive number for' +str(variable

最近刚开始学习python,遇到了一个奇怪的问题。我创建此函数是为了确保用户输入的数字大于零:

def numcheck(value,variable):

    while value <= 0:
        print('The' +str(variable) + 'must be greater than zero! ')
        value = float(input('Please enter a positive number for' +str(variable)+ \
                            'and press enter. '))
    return value

我的问题是,函数成功识别非正值,但当输入新值时,原始数字仍会传递给函数的其余部分。例如,如果在“长度”中输入-10,系统将提示我输入另一个值。如果输入15,while循环将关闭,但-10仍将从函数中传递出去,从而完全破坏后续的算法。我花了几个小时试图补救,但没有成功。如果你们能提供任何建议,我将不胜感激。非常感谢

Python是按值传递的。这意味着传递给函数的变量值将被复制。如果修改函数的参数变量,则不会在其外部进行更改

只需在函数末尾返回新的长度,然后调用如下所示:

长度=numcheck(长度,“块的长度”)

这样,您将把结果存储在
length
变量中


在函数内部和外部进行输入也不是很好的做法。复制对输入的调用并不是一个真正的问题,但是两个调用都应该在函数内部,当前的方式很糟糕。但这不是问题所在。

您返回新值,但从不分配给旧变量。请确保while循环语句具有正确的标识选项卡“是”,这不是一个很好的问题。但是,问题向下的选民真的希望一个新手问他的第一个问题,以便立即失去所有的代表吗?也许我们应该给他留点时间让他习惯,然后再把他排除在外?我为这个问题的质量道歉。我已经为此沮丧了好几个小时,只是需要一些帮助。多亏了克里斯,问题已经解决了,我应该删除线程吗?显然,这是一个非常新的问题
def main():
    length = float(input('What is the length of the block of cheese? '))
    numcheck(length,' length of the block ' )