【发布时间】:2019-05-07 12:10:55
【问题描述】:
我有一个简单的函数,我喜欢调用它并返回一些值。该函数内部有一个 if、elif 和 else 语句,目的是当 if 条件满足时,返回一些值,即当 if 和 elif 不满足时,运行并显示 else 语句下的内容。我已使用小部件警报来标记和说明问题。
问题是:
1- 当函数调用时,它只返回 else 下的内容。尽管 if 语句已完成。
2- 删除else下的所有代码行,只运行if和elif,满足条件返回某个值,否则返回TypeError: 'NoneType' object is not iterable。
代码:
from PyQt5 import QtCore, QtWidgets, QtGui
def fun( x, y, z):
X = x
Y = y
Z = z
for i in range(0,Z):
R = i * X/Y
if R == 10:
return R, i
elif 10 < R <= 45:
return R, i
else:
print('Error')
app = QtWidgets.QApplication([])
error_dialog = QtWidgets.QErrorMessage()
error_dialog.showMessage('Error!! change values')
app.exec_()
return R, i
使用这些值来满足条件。
result, prod = fun(10, 60, 100)
result, prod = fun(105, 60, 100)
result, prod = fun(10, 600, 100)
用 else 语句输入:
result, prod = fun(10, 60, 100)
print( result, prod)
带有 else 语句的输出:
Error window shows up
Error
0.0 0
不带else语句的输入:
result, prod = fun(10, 60, 100)
print( result, prod)
不带else语句的输出:
10.0 60
我想保留所需的语句和返回值。感谢您的帮助
【问题讨论】:
-
"当函数调用时,它只返回 else 下的内容。尽管 if 语句已经完成。"那不是真的。几乎可以肯定的是,您对 if 语句的作用有误。
-
您的 if 语句和 elif 语句返回相同的值,如果我可以问,它们有什么意义?你怎么确定你的 if 语句即使在填满时也没有被调用,当这种情况发生时你能否分享这样的输入和输出。
-
我想我在这里遇到了问题。我运行了您的代码,发现 else 语句存在问题。我发布了一个答案,现在应该可以帮助您解决问题。干杯!
-
@FamousJameous 你错了。注意 python-3.x 标签。
标签: python python-3.x function if-statement