如果用户输入特定单词,则会循环执行的Python程序

时间:2019-03-16 08:16:34

标签: python

我正在尝试制作一个程序,如果用户输入特定短语,该程序就会循环播放。当前,无论用户输入什么,程序都会结束循环。

umlist = ['um', 'UM' , 'Um' ]
while True:
    phrase = input('Say something. ')
    umcheck=phrase.split()
    if umcheck in umlist:
        print("You said um, try again")
    else:
        break
print("Well done, you didn't say um.")

如果用户输入“ um”,我需要更改什么以使程序检测并循环

3 个答案:

答案 0 :(得分:3)

您可以使用更简单的解决方案来实现:

将输入内容设为小写,然后在其中检查'um':

while True:
    phrase = input('Say something. ')
    umcheck=phrase.lower().split()

    if 'um' in umcheck:
        print("You said um, try again")
    else:
        break
print("Well done, you didn't say um.")

答案 1 :(得分:2)

in在另一个list中查找list的出现。它不会像您认为的那样执行相交测试。

仅说明一下,使条件匹配的唯一方法是将一个列表放在列表中,如下所示:

umlist = ['um', 'UM' , 'Um', ["my","sentence"] ]
umcheck = ["my","sentence"]
>>> umcheck in umlist
True

可以使用any和其他(Test if lists share any items in python)来实现。我的方法是使用set。创建您不想看到的一组单词,并查看用户输入的一组单词是否相交:

umlist = {'um', 'UM' , 'Um' }
while True:
    phrase = input('Say something. ')
    umcheck=set(phrase.split())
    if not umcheck.isdisjoint(umlist):
        print("You said um, try again")
    else:
        break
print("Well done, you didn't say um.")
如果两个集合没有共同的元素,则

umcheck.isdisjoint(umlist)返回True。取而代之以进行测试(或使if分支反向以更清楚)

答案 2 :(得分:1)

首先,SOME_VARIABLE - [<some_value>]是一个列表!一言不发。

exp:

SOME_VARIABLE - []

然后:

umcheck

phrase = "this is an um test" 中找不到任何列表。

您可以这样做:

umcheck => ['this', 'is', 'an', 'um', 'test']