【发布时间】:2021-10-20 12:05:47
【问题描述】:
我创建了一个函数,当返回 True 时,我将该 True 值放入一个变量中并将该变量置于 if 条件中,它使用 elif not 进入另一个条件,当我尝试打印它时,它打印它一次为真,一次为假,只有一行打印。
为什么它会改变值,我该如何解决? 编辑:删除了输出的最后一部分,因为它来自发生这种情况的函数之外的打印,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
【问题讨论】:
-
打印调试非常浪费您的时间。你会更适合学习如何使用调试器,它会立即发现你的问题。
-
最后的打印是从哪里来的?如果你错过了,那么你可能也错过了其他一些印刷品。
-
首先,请注意在“X”之前打印了两个布尔值,但您的代码在
print("X")之前只有一个打印语句,最接近的一个是print(is_valid)。显然,is_valid是False。在 if/else 在 python 中被破坏的假设和假设is_valid的值超出您的期望之间,后者每次都是这种情况。 -
添加到我的最后一条评论中,我很确定您在 check_valid_input 中打印的是 True,但它实际上在完成时返回 False。第二个print其实就是我们在代码中看到的print(is_valid),是False。