【问题标题】:Using Multiple If Statements with While Loop在 While 循环中使用多个 If 语句
【发布时间】:2020-06-03 03:08:49
【问题描述】:

我正在尝试编写一个 while 循环,该循环遍历某个列表以查找某些子字符串。它将找到带有这些子字符串的单词并打印出这些字符串。

这是一个完美的例子,但只有一个词:

lista = ['applepie','appleseed','bananacake','bananabread']

i = 0
z = len(lista)
while i < z:
    if ('pie' in lista[0+i]) == True:
        print(lista[0+i])
        break
    i = i  + 1
else:
    print('Not There Yet')

这会打印出苹果派(这是我们想要的!)。

如何修复这个 while 循环以添加多个约束?

我正在尝试这样做:

lista = ['applepie','appleseed','bananacake','bananabread']

i = 0
z = len(lista)
while i < z:
    if ('pie' in lista[0+i]) == True:
        print(lista[0+i])
    if ('cake' in lista[0+1]) == True:
        print(lista[0+i])
    i = i  + 1
else:
    print('Not There Yet')

打印出来: 苹果派 还没有

当我想要打印出来时: 苹果派 香蕉蛋糕

我使用了多个“if”语句,因为我知道是否要使用“elif”,它只会在第一个“if”语句为假时运行。

感谢任何帮助!

【问题讨论】:

  • 'cake' in lista[0+1] 应该是 'cake' in lista[i](不知道为什么要添加 0...但应该是 i,而不是 1
  • 你为什么要做这样的列表而不是常规的for循环?!?

标签: python loops


【解决方案1】:

你有两个小问题,我认为一个更大。两个小的中的第一个就是上面提到的尼克和布伦登。第二个是你的条件。它应该是

您似乎在概念化实际工作时遇到了问题。为此,我建议你step through it here

【讨论】:

    【解决方案2】:

    您可以使用any() 查看条件列表。当条件首次满足时,它将评估为True,如果从未发生,则评估为False。如果你把它和一个普通的 python for 循环结合起来,它会很简洁:

    lista = ['applepie','appleseed','bananacake','bananabread']
    words = ['pie', 'cake']
    
    for food in lista:
        if any(word in food for word in words):
            print(food)
    

    打印出来:

    applepie
    bananacake
    

    您也可以像列表推导一样获得匹配的单词列表:

    lista = ['applepie','appleseed','bananacake','bananabread']
    words = ['pie', 'cake']
    
    found = [food for food in lista if any(word in food for word in words)]
    # ['applepie', 'bananacake']
    

    一般来说,Python 不鼓励您在循环中使用索引,除非您确实需要。它往往容易出错且难以阅读。

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2015-05-19
      • 2012-11-28
      • 2014-08-20
      • 2018-05-27
      • 2020-11-28
      • 2016-07-10
      • 2017-08-20
      • 1970-01-01
      相关资源
      最近更新 更多