【发布时间】:2018-08-10 01:34:55
【问题描述】:
最近刚开始学习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 仍会从函数传递,从而完全破坏后面的算术。我花了几个小时试图解决这个问题,但没有成功。我会很感激你们提供的任何建议。非常感谢!
【问题讨论】:
-
您返回新值,但从不分配给旧变量。
-
请确保while循环语句有正确的标识标签
-
是的,这不是一个很好的问题。但是,问题否决者真的希望一个新手在 SO 中提出他的第一个问题以立即失去他的所有代表吗?也许我们应该在排除他之前给他一些时间来适应 SO?
-
对于问题的质量,我深表歉意。我对此感到沮丧几个小时,只需要一些帮助。多亏了kriss,问题得到了解决,我应该删除线程吗?显然对 SO 很陌生
标签: python python-3.x while-loop return conditional