If循环中的条件语句,具有两个条件

2024-06-09 20:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在过去的一天里,我一直在努力解决一个非常简单(但令人沮丧的困难)的问题。我现在有一段代码,它使用csv阅读器逐行循环浏览csv文件。循环不是一个问题,因为我以前成功地使用了相同的循环;它似乎是我if语句的问题。你知道吗

以下是一个示例:

if  'INCORRECT_KEY_PRESSED' and 'rad_mod_KA_0043-lo-mod' in row:
            userAnswerColumn.append(row[20])
            userRtColumn.append(row[21])

如果一行中包含短语INCORRECT_KEY_PRESSEDrad_mod_KA_0043-lo-mod,则该语句将附加两个具有特定位置值的列表。我有几个这样的说法,但一行从来没有这两个短语超过一次。像rad_mod_KA_0043-lo-mod这样的短语总是唯一的,而INCORRECT_KEY_PRESSED经常出现。你知道吗

if语句似乎只使用了我的一个条件,因为它向每个列表添加了多个数据。你知道吗

我以前遇到过这个问题,通过创建集合并执行以下操作来解决它:

if (all(x in row for x in ssSet) and row[14] == '7'):
            ssColumn7.append(row[20])
            ssRtColumn7.append(row[21])

然而,有这么多独特的条款,我将不得不作出过多的集合。怎么了?你知道吗


Tags: andcsvkeyinmodlo列表if
3条回答
if  'INCORRECT_KEY_PRESSED' and 'rad_mod_KA_0043-lo-mod' in row:
            userAnswerColumn.append(row[20])
            userRtColumn.append(row[21])

应更改为:

if  ('INCORRECT_KEY_PRESSED'  in row) and ('rad_mod_KA_0043-lo-mod' in row):
            userAnswerColumn.append(row[20])
            userRtColumn.append(row[21])

因为否则python会理解

if ('INCORRECT_KEY_PRESSED') and 'rad_mod_KA_0043-lo-mod' in row:

这可能永远是真的。你知道吗

每次有多个条件要测试时,您可能需要考虑一下这一点。你知道吗

语句'INCORRECT_KEY_PRESSED' and 'rad_mod_KA_0043-lo-mod' in row被解释为:

('INCORRECT_KEY_PRESSED') and ('rad_mod_KA_0043-lo-mod' in row)

第一部分总是True(非空字符串是truthy,或者在布尔表达式中被认为是boolean True)。你知道吗

你可能想要:

if 'INCORRECT_KEY_PRESSED' in row and 'rad_mod_KA_0043-lo-mod' in row:

相反,也可以使用设置交点:

if {'INCORRECT_KEY_PRESSED', 'rad_mod_KA_0043-lo-mod'}.intersection(row):

您的分组错误,python的工作方式如下:

if  ('INCORRECT_KEY_PRESSED') and ('rad_mod_KA_0043-lo-mod' in row):

所以你需要:

if  ('INCORRECT_KEY_PRESSED' in row) and ('rad_mod_KA_0043-lo-mod' in row):

相关问题 更多 >