首页 > 解决方案 > 具有 True 值的布尔变量不会进入正确的“如果(变量)”条件,而是进入“非(变量)”条件

问题描述

我创建了一个函数,当返回 True 时,我将该 True 值放入一个变量中,并将该变量置于 if 条件中,它使用 进入另一个条件elif not,当我尝试打印它时,它打印一次为 True,一次打印为错误,只有一个打印行。

为什么它会改变值,我该如何解决?编辑:删除了输出的最后一部分,因为它来自发生这种情况的函数之外的打印,True 和 False 现在仅来自一个打印行。“X”和排序列表不是问题的一部分,只是打印和 if 条件

代码:

# letter_guessed = "s", old _letters_guessed = [] (empty list)

is_valid = check_valid_input(letter_guessed, old_letters_guessed) # is_valid = True
print(is_valid) 
if(is_valid): # skips this
    old_letters_guessed.append(letter_guessed)
    return True
elif not(is_valid): # enters this
    sorted_list = " -> ".join(old_letters_guessed)
    print("X")
    print(sorted_list)
    return False

输出:

True 和 False 都来自同一打印行,没有另一个打印

True
False

标签: pythonboolean

解决方案


跟进一些评论。您的函数 check_valid_input 似乎也在打印一个布尔值。这是为什么要打印两个布尔值的唯一解释。在您给出的示例中, is_valid 为 False。

letter_guessed = "s", 

old_letters_guessed = [] 

is_valid =  False
print(is_valid) 
def f():
    if(is_valid): # skips this
        old_letters_guessed.append(letter_guessed)
        return True
    else: # enters this
        sorted_list = " -> ".join(old_letters_guessed)
        print("X")
        print(sorted_list)
        return False

f()

这按预期工作。


推荐阅读