如何 return 布尔值使用 if/elif 检查来运行和评估?
How to return boolean value to function and evaluate with an if/elif check?
# v1.0#
#######
import time
#Definitions#
def StartOrNah():
print#Newline
time.sleep(0.5)
print("To begin, type 'start' or to exit type 'exit'...")
time.sleep(0.6)
sorn = str(raw_input("--> ")).lower()
if sorn == str("start"):
return True
elif sorn == str("exit"):
return False
else:
print#Newline
print("That is not valid, please try again.")
StartOrNah()
def program():
print#Newline
print("The main program function has been invoked.")
#Calls#
StartOrNah()
if StartOrNah:
program()
elif StartOrNah:
print#Newline
print("The program will now exit...")
time.sleep(3)
我的目标是 return StartOrNah 函数的布尔值,并使用 if 检查来查看结果是 True 还是 False。我已经尝试了几种方法,但我永远无法在评估中识别出 False 。我觉得我做的功能非常错误。
如果答案保持半简单,我将不胜感激,因为我对这门语言有点陌生。
问题是您没有 return 来自递归的值。在该子句中添加一个词:
else:
print#Newline
print("That is not valid, please try again.")
return StartOrNah()
我也是新手...
所以如果你说:
if StartorNah():
pass
您正在尝试查看它是否 True
。如果您想查看它是否是 False
,请使用:
if not StartorNah():
print#Newline
print("The program will now exit...")
time.sleep(3)
您还可以使用 else
语句,如果不满足其他 if
和 elif
语句的条件,将使用该语句:
else:
print#Newline
print("The program will now exit...")
time.sleep(3)
如评论中所述,尝试使用 StartorNah()
而不是 StartorNah
。
共有三个问题,但似乎没有任何答案可以正确地涵盖所有问题,所以开始吧。在此片段中:
else:
print#Newline
print("That is not valid, please try again.")
StartOrNah()
通过省略关键字 return
,您可以确保 StartOrNah()
将被调用,但其结果将丢失并且调用者(原始 StartOrNah
)将简单地 return None
因为执行的最后一条语句没有 return。 None
将在 if
语句中被视为 False
。您需要在最后一行前面添加 return
。
为了演示这一点,运行 这个小程序:
def foo():
3
print foo()
def bar():
return 3
print bar()
在此代码段中:
#Calls#
StartOrNah()
if StartOrNah:
program()
当您说 if StartOrNah
时,您是在询问对象 StartOrNah
、 是一个函数 是否等同于 True
,它被误导(它总是会)。调用 StartOrNah()
returns 一个你应该保留并用它做某事的值,就像你应该 return
它上面一样。这并不意味着您应该通过引用函数名称来询问结果是什么。相反,你需要做这样的事情:
result = StartOrNah()
if result:
program()
为了帮助您理解,我建议还添加两行,如下所示:
result = StartOrNah()
print("result:", result)
print("StartOrNah:", StartOrNah)
if result:
program()
您应该看到 result
是 True
或 False
而 StartOrNah
是一个函数。
接下来,在这个片段中:
if StartOrNah:
program()
elif StartOrNah:
print#Newline
如果 StartOrNah
是 False
那么这两个块都不会被执行。使用 else
而不是 elif
因为 elif
仍然要求给定的条件为真(因此包含 if
)这显然不是这种情况,因为原始 if
只是表明它是错误的。另一方面,当匹配的 if
(和任何 elif
s)未被执行时,else
总是被执行。
除非所有这些问题都得到解决,否则我希望该程序不会像您想象的那样工作。
由于您对函数的工作方式有些困惑,我强烈建议您暂时远离递归(即在 StartOrNah()
内调用 StartOrNah()
),因为这只会让事情变得更加混乱和困难。尝试一些简单的玩具程序来提高您对基本概念的理解。
# v1.0#
#######
import time
#Definitions#
def StartOrNah():
print#Newline
time.sleep(0.5)
print("To begin, type 'start' or to exit type 'exit'...")
time.sleep(0.6)
sorn = str(raw_input("--> ")).lower()
if sorn == str("start"):
return True
elif sorn == str("exit"):
return False
else:
print#Newline
print("That is not valid, please try again.")
StartOrNah()
def program():
print#Newline
print("The main program function has been invoked.")
#Calls#
StartOrNah()
if StartOrNah:
program()
elif StartOrNah:
print#Newline
print("The program will now exit...")
time.sleep(3)
我的目标是 return StartOrNah 函数的布尔值,并使用 if 检查来查看结果是 True 还是 False。我已经尝试了几种方法,但我永远无法在评估中识别出 False 。我觉得我做的功能非常错误。
如果答案保持半简单,我将不胜感激,因为我对这门语言有点陌生。
问题是您没有 return 来自递归的值。在该子句中添加一个词:
else:
print#Newline
print("That is not valid, please try again.")
return StartOrNah()
我也是新手...
所以如果你说:
if StartorNah():
pass
您正在尝试查看它是否 True
。如果您想查看它是否是 False
,请使用:
if not StartorNah():
print#Newline
print("The program will now exit...")
time.sleep(3)
您还可以使用 else
语句,如果不满足其他 if
和 elif
语句的条件,将使用该语句:
else:
print#Newline
print("The program will now exit...")
time.sleep(3)
如评论中所述,尝试使用 StartorNah()
而不是 StartorNah
。
共有三个问题,但似乎没有任何答案可以正确地涵盖所有问题,所以开始吧。在此片段中:
else:
print#Newline
print("That is not valid, please try again.")
StartOrNah()
通过省略关键字 return
,您可以确保 StartOrNah()
将被调用,但其结果将丢失并且调用者(原始 StartOrNah
)将简单地 return None
因为执行的最后一条语句没有 return。 None
将在 if
语句中被视为 False
。您需要在最后一行前面添加 return
。
为了演示这一点,运行 这个小程序:
def foo():
3
print foo()
def bar():
return 3
print bar()
在此代码段中:
#Calls#
StartOrNah()
if StartOrNah:
program()
当您说 if StartOrNah
时,您是在询问对象 StartOrNah
、 是一个函数 是否等同于 True
,它被误导(它总是会)。调用 StartOrNah()
returns 一个你应该保留并用它做某事的值,就像你应该 return
它上面一样。这并不意味着您应该通过引用函数名称来询问结果是什么。相反,你需要做这样的事情:
result = StartOrNah()
if result:
program()
为了帮助您理解,我建议还添加两行,如下所示:
result = StartOrNah()
print("result:", result)
print("StartOrNah:", StartOrNah)
if result:
program()
您应该看到 result
是 True
或 False
而 StartOrNah
是一个函数。
接下来,在这个片段中:
if StartOrNah:
program()
elif StartOrNah:
print#Newline
如果 StartOrNah
是 False
那么这两个块都不会被执行。使用 else
而不是 elif
因为 elif
仍然要求给定的条件为真(因此包含 if
)这显然不是这种情况,因为原始 if
只是表明它是错误的。另一方面,当匹配的 if
(和任何 elif
s)未被执行时,else
总是被执行。
除非所有这些问题都得到解决,否则我希望该程序不会像您想象的那样工作。
由于您对函数的工作方式有些困惑,我强烈建议您暂时远离递归(即在 StartOrNah()
内调用 StartOrNah()
),因为这只会让事情变得更加混乱和困难。尝试一些简单的玩具程序来提高您对基本概念的理解。