为什么我的if语句不起作用?

时间:2017-04-19 12:11:53

标签: python python-2.7 if-statement

为什么代码底部的if语句不起作用? 单词列表包含多个' test',但if语句下面的print语句不起作用。

text1 = "a"
text2 = "b"
text3 = "c"
words = []
if len(text1) < 2:
    words.append('test11')
elif text1.isspace():
    words.append('test12')
if len(text2) < 2:
    words.append('test21') 
elif text2.isspace():
    words.append('test22')
if len(text3) < 2:
    words.append('test31')
elif text3.isspace():
    words.append('test32')
if "test" in words:
    print "Test"

3 个答案:

答案 0 :(得分:3)

在您的前3个if语句结束时:

words = ['test11', 'test21', 'test31']

使用in检查数组'test'中是否发生words,它实际上在做的是将'test'与单词中的每个单词进行比较:

'test11' == 'test'  # False
'test21' == 'test'  # False
'test31' == 'test'  # False

很明显它应该返回False。您需要做的是检查'test'中的任何字词中是否显示words

for word in words:
    if 'test' in word:
        print("Test")
        break

或更诡异:

if any(["test" in word for word in words]):
    print("Test")

答案 1 :(得分:0)

如果单词#pragma once #include "Simulator\CircuitObject.hpp" #include "Simulator\Connection.hpp" #include <SFML\Graphics.hpp> #include <vector> class LogicSimulator { public: std::vector<CircuitObject*> circuitObjects; std::vector<CircuitObject*> selectedCircuitObjects; std::vector<Connection*> connections; sf::RenderWindow Window; void Init(); private: void start(); void draw(); }; 位于test列表中列出的字符串中,可能您需要测试一些内容:

words

答案 2 :(得分:0)

&#39;测试&#39;本身是一个完整的字符串,在列表中不存在,如果你在列表的元素内进行比较,它将是真的。

validity = map(lambda x: 'test' in x, words)
if True in validity:
    print "Test"