python - 在 Python 2.7 中使用语句 True 和 False

标签 python if-statement command-prompt

我希望在我的 Python (2.7) 命令提示符中使用语句“True”和“False

segmentation_accuracy(reference=REFERENCE, segmented=SEGMENTED, output=OUTPUT, method=METHOD, threshold=THRESHOLD, sep=SEP, header=HEADER)

如果 header 为 True,则打印一个带有标题的文本文件,如果 header 为 False,则打印一个没有标题的文本文件。

在命令提示符中:

REFERENCE = raw_input("Reference (*.shp):")
SEGMENTED = raw_input("Segmented (*.shp):")
METHOD = raw_input("Method (ke, pu, clinton):")
if METHOD != "ke" and METHOD != "pu" and METHOD != "clinton":
    raise ValueError("%s is not a valid method" % METHOD)
if METHOD == "ke" or METHOD == "clinton":
    THRESHOLD = input("Threshold (0.0 - 1.0):")
    if not check_threshold(THRESHOLD):
        raise AccuracyException("Threshold of %s is not valid" % THRESHOLD)
else:
    THRESHOLD = None
SEP = raw_input("Sep:")
HEADER = raw_input("Header (True/False):")
if HEADER is not True or HEADER is not False:
    raise ValueError("%s is not valid" % HEADER)
# output 
OUTPUT = raw_input("Output (*.txt):")

当我在 Windows 中运行命令提示符时,如果我设置了 raw_input("Header (True/False):") TrueFalse ,我总是得到 ValueError

我也用过这个组合

if HEADER != True or HEADER != False:
        raise ValueError("%s is not valid" % HEADER)

同样的问题

最佳答案

raw_input 的返回值是一个字符串而不是 bool 值。因此,您的 is not Trueis not False 测试,尽管它们具有明确定义的含义,但该含义并不是您想要的含义。您需要将 HEADER 与字符串值进行比较。

例如,您需要这样的代码:

if HEADER.lower() == 'true':

我使用 tolower() 进行不区分大小写的比较。您可能还想去除空白:

if HEADER.strip().lower() == 'true':

我确定您可以自己填写针对 false 的测试。


即使你确实有一个 bool 值,你也不应该使用像 is not Trueis False 这样的代码。您应该通过以下方式测试真实性:

if somebool:

if not somebool:

因为它更具可读性。

关于python - 在 Python 2.7 中使用语句 True 和 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479981/

相关文章:

python - 处理闰年并替换新日期

ios - 如何比较if语句中的多个变量?

string - 根据 Pandas 中其他两列的条件创建一个列

visual-studio-2008 - 不安装Visual Studio的Visual Studio命令提示符

java - 将 jar 文件添加到类路径

python - 如何基于完成Python脚本触发Azure数据工厂?

python - 在Python编程中使用numpy和nltk或CLUTO对单词进行聚类

python - 将 kwargs 传递给 re.sub()

javascript - 如何制作 if/else 语句循环?

java - 在命令提示符下编译并运行java程序