输入问题Python

时间:2016-04-18 13:55:55

标签: python input boolean

我正在用python编写一个程序,它非常简单我只想知道如果它只包含m,u或i,那么如何使用户输入为true,但绝对没有别的。我的代码运行,但如果输入是“miud”,它将返回true,因为m i和u在其中。下面的代码是我到目前为止的代码,如何更改它以使其仅允许字母m u和i?

x=input("Enter your string")
if 'm' in x and 'i' in x and 'u' in x:
    print("true")
else:
    print("false")

2 个答案:

答案 0 :(得分:3)

使用内置的all

string = input("Enter your string")
print(all(char in ['m', 'i', 'u'] for char in string))

基本上,

(char in ['m', 'i', 'u'] for char in string)

构建一个产生布尔值的迭代。对于字符串中的每个字符(从第一个开始),如果char为m,i或u,则此迭代器产生True,否则为False

然后你输入all()这个迭代器:

all(iterable)
     

如果iterable的所有元素都为true(或者iterable为空),则返回True。相当于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

all遍历新创建的迭代器,一旦获得False就返回False,如果只获得True值,则返回True

迭代器的优点在于,不会计算True / False列表:测试是在运行中完成的,all一旦找到不是char就会停止无论是我,还是你。这里不相关,但这可能会对某些应用程序产生性能影响。

答案 1 :(得分:3)

你可以使用一套,

if set(x).issubset({'m', 'u', 'i'}):
    print("true")
else:
    print("false")

此代码使用setsissubset方法。由于字符串是可迭代的,因此它可以用作set()的参数。该集将包含唯一项(在这种情况下,输入字符串中的每个唯一字符)。

可以使用issubset方法针对已知有效字符(也在集合中)测试该值。

{'m', 'u', 'i'}是创建集合的一种方式,但这也可以:

if set(x).issubset(set('mui')):