1

我想语句中为一个放置多个字符串,一行一行:

input = str(raw_input(''))   
if str('a') or ('b') or ('c') in str(input):
    print "a string"
else:
    print "no"

单个in语句是否可以有多个字符串?

4

2 回答 2

6

首先str('a') == 'a'(因为'a'已经是一个字符串),所以你可以忽略它。

'a' or 'b' or 'c' in input

这个表达式被解析如下:

('a') or ('b') or ('c' in input)

因此,您正在检查是否'a''b'评估为真,就是这种情况。如果要使用in运算符检查它们,则必须明确指定:

'a' in input or 'b' in input or 'c' in input

您还可以简化:

any(x in input for x in ('a', 'b', 'c'))
于 2013-07-04T22:21:25.543 回答
3

是的,但你写的东西完全不同。它检查是否str('a')为真,是否'b'为真,或是否'c'input. 虽然 Python 可读性很强,但它不会对您编写的内容做出假设。你必须明确:

if 'a' in input or 'b' in input or 'c' in input:
    ...

或者:

strings = ('a', 'b', 'c')

if any(s in input for s in strings):
    ...

使用字符串参数调用str()是没有意义的。另外,input是内置的名称,所以我建议你重命名你的变量。

于 2013-07-04T22:19:27.570 回答