Python循环不返回所需的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python循环不返回所需的值相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

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

您只需在函数末尾返回新长度并调用如下:

length = numcheck(长度,'块的长度')

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

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

以上是关于Python循环不返回所需的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 mongo 聚合循环遍历数组并返回所需的文档?

如何将scrollPane设置为所需的值?

Json 没有以所需的模式返回正确的值

在 Python 中存储整数所需的字节数 [重复]

如何修复数据集以返回所需的输出(pytorch)

csharp 一种询问用户答案的​​方法,验证答案是否正确并返回所需的值。如果答案无效,它会询问