为什么代码底部的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"
答案 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"