python - 具有 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
解决方案
跟进一些评论。您的函数 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()
这按预期工作。
推荐阅读
- android - 带有 2 个 Fragment 屏幕的 Google play 游戏服务
- php - 当我打电话给她 7.0 时,我的函数的参数很少
- python - Python动态创建xml文件
- python - 如何细分熊猫数据框
- windows - 如何将 %userprofile% 放入 puppet exec
- angular - 在测试直接与注入器一起使用以获取变量值的组件时,在 Angular 5 中遇到 NullInjectorError
- c# - 哪些 SDL 工具作为 Microsoft CloudBuild 的一部分运行?
- javascript - 如何在通过 NPM 分发时管理 React 组件(Redux、CSS)的自定义方面
- javascript - 如何使用 Lodash 删除对象数组中的某些元素
- corda - 页面规范对 Vault.Trackby 的影响