python - 是否可以在代码检查完每个选项后让我的 else 语句出现?

标签 python python-3.x loops if-statement while-loop

我有一个遍历二维列表的 while 循环,看它是否可以找到要删除的类似提交。

    i=0

while i <= len(my_list):
    if my_list[i] == userinput:
        del my_list[i]
        print("Entry Removed!")
    else:
        print("This publication does not exist")
    i+=1

我想要的是代码在未找到匹配项时打印消息“此出版物不存在”。然而,现在发生的情况是,每次比较一个项目时,代码都会打印句子。

我明白为什么会这样,但我不知道如何解决。解决此问题的最佳方法是什么?

编辑:将列表名称从“list”更改为“my_list”。糟糕,我实际上并没有在代码中这样调用它,我只是在上传问题时更改了名称以便于理解。

最佳答案

你需要一个 bool 值:

i = 0
found = False
while i <= len(list):
    if list[i] == userinput:
        del list[i]
        print("Entry Removed!")
        found = True
    i += 1

if not found:
    print("This publication does not exist")

一些不相关的建议:

  • 最好不要对变量使用名称list
  • 在迭代同一个列表时不要从列表中删除项目。您可以反向迭代列表:

    i = len(li) - 1
    found = False
    while i >= 0:
        if li[i] == userinput:
            del li[i]
            print("Entry Removed!")
            found = True
        i -= 1
    
    if not found:
        print("This publication does not exist")
    

关于python - 是否可以在代码检查完每个选项后让我的 else 语句出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313895/

相关文章:

python - 为什么 `max` 和 `min` 与 numpy.nan 有如此奇怪的行为?

python - Django 传递字符串参数

python - PyBossa Vagrant 不工作

python - 当 IP 用作 ARP 数据包中的范围时,Scapy 不起作用

python - Marshmallow Parent Schema - 如何在子模式之间共享验证装饰器?

android - 在android中实现while循环

Python:将嵌套字典列出到 pandas DataFrame 问题

python-3.x - Pandas数据框,找到最大值并返回相邻列值,而不是整行

iphone - iPhone 上的无缝动态音频循环

c++ - 在 C++ 循环中,重用大型数据结构并重置内容或分配新内容,哪个更快?