一个Python程序,当用户输入特定单词时循环

2024-04-19 14:46:56 发布

您现在位置: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”,我需要改变什么才能让程序检测并循环


Tags: 用户程序trueinputsomethingumsplitsay
3条回答

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分支)

首先,umcheck是一个列表!一句话也没说。你知道吗

实验:

phrase = "this is an um test"

然后:

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

umlist中找不到任何列表。你知道吗

您可以这样做:

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

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

输入小写,然后检查其中的“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.")

相关问题 更多 >