Phython:添加有效输入后如何继续请求输入?

Phython: How to continue to to request for input after a valid one is added?

提问人:xXSnowieXx 提问时间:10/13/2023 更新时间:10/27/2023 访问量:40

问:

my_names = []
while len(my_names) < 2:
    my_name = input("Enter a name: ").strip().lower()
    if my_name == "":
        print("Minimum 2 names.")
        continue  # Continue to prompt for names
    elif my_name in my_names:
        print("No duplicate name...re-enter")
        continue  # Continue to prompt for names
    else:
        my_names.append(my_name)
        print(my_names)
        continue  # Continue to prompt for names

我是一个初学者python程序员。我的目标是让用户输入 2 个以上的值,并且该值不能与列表中已有的值重复。在我到达最后一个 else 子句后,即使我有一个“继续”,我的报价也会退出。为什么会这样?我怎样才能做到,只有在名称列表具有 2 个以上的值并且用户输入空值之后,while 循环才会退出?

我尝试使用嵌套的 ifs,但似乎不起作用。没有继续也不起作用。想过使用 elif 而不是 else,但我不知道 i 可以作为子句的其他表达方式。试着问AI代码创建者也得不到我想要的结果。非常感谢!

python-3.x while循环

评论

0赞 Kostas Nitaf 10/13/2023
你的脚本工作得很好。如果您想在三个名称后退出,请更改此名称while len(my_names) < 3
0赞 xXSnowieXx 10/13/2023
它停止了,直到只有 2 个名字。我希望它继续输入更多名称,最小值为 2,但没有最大值,直到用户按<Enter>(即,没有值,但必须在 2 个以上的名称之后)。
0赞 Kostas Nitaf 10/14/2023
我的回答解决了你的问题吗?

答:

0赞 Kostas Nitaf 10/14/2023 #1

根据您的评论,您应该像这样更改代码:

my_names = []
while True:
    my_name = input("Enter a name: ").strip().lower()
    if my_name == "":
        if len(my_names) <= 2:
            print("Minimum 2 names.")
            continue  # Continue to prompt for names
        else:
            break  # Exit Loop
    elif my_name in my_names:
        print("No duplicate name...re-enter")
        continue  # Continue to prompt for names
    else:
        my_names.append(my_name)
        print(my_names)
        continue  # Continue to prompt for names
0赞 EvensF 10/27/2023 #2

也许这样的事情会让你满意?

my_names = []

finished = False
while not finished:
    my_name = input("Enter a name: ").strip().lower()
    if my_name == "":
        finished = len(my_names) >= 2
        if not finished:
            print("Minimum 2 names.")
    elif my_name in my_names:
        print("No duplicate name… re-enter")
    else:
        my_names.append(my_name)
        print(my_name, "added")