Python While 循环未返回所需的值

Python While Loop Not Returning Desired Value

最近刚开始学习 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

该函数在主函数中使用如下:

def main():
    length = float(input('What is the length of the block of cheese? '))
    numcheck(length,' length of the block ' )

我的问题是函数成功识别了非正值,但是当输入新值时,原始数字仍然传递给函数的其余部分。比如在length中输入-10,会提示我再输入一个值。如果输入 15,while 循环将关闭,但 -10 仍会从函数中传递,完全破坏后面的算术。我花了几个小时试图解决这个问题,但没有成功。我将不胜感激你们提供的任何建议。非常感谢!

Python 是按值传递。这意味着传递给函数的变量的值将被复制。如果你修改一个函数的参数变量,它不会在它之外改变。

您只需 return 函数末尾的新长度并调用如下:

length = numcheck(length,' length of the block ')

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

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