如何在python中测试列表中每个元素的结尾

时间:2015-10-05 23:16:00

标签: python string list

我是编码的新手,所以我道歉 - 我确信只有if语句和语句才能找到这个解决方案。

我有一个用户输入的10个字符串列表,我想测试是否有任何单词以'ly。'结尾。

list = [] 
ly= 'ly'
for l in range(10):
    us = [str(input("Enter a subject: "))]
    list.append(us)
for a in list:
    if ly in a:
       print (a, "is an adverb")
    else:
        print (a)

我的代码目前只会说是副词;然而,它不会迅速说是一个副词。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

您的主要问题是list list list,而str us = [str(input("Enter a subject: "))] str,因为这一行:

list

这些括号正在包裹foo以生成一个元素barly。因此,如果您输入lylist,然后[["foo"], ["barly"], ["ly"]] ,(我们将跳过所有10个),您会得到["foo", "barly", "ly"]

in

当你可能期望的时候:

list

问题是in检查是检查str包装的ly检查,而不是"ly",所以它只匹配实际list(因为"ly"位于us = input("Enter a subject: ") # If this is Python 2, use raw_input, not input ),但不是其他任何内容(因为它们不等于ly)。

删除括号以使其成为:

if ly in a:

然后确保您进行后缀检查(不只是if a.endswith("ly"):在字符串中的任何位置),将{{1}}更改为{{1}}。

答案 1 :(得分:0)

您只需要迭代您的数组并检查某些字符串是否以'结束。您可以使用this

str.endswith(suffix[, start[, end]])

更改您的代码:

for a in list:
if a.endswith(ly):
   print (a, "is an adverb")
else:
    print (a)

答案 2 :(得分:0)

ly = 'ly'
wordlist = [input("Enter a subject: ") for i in range(10)]
for a in wordlist:
    print(a, "is an adverb" if a.endswith(ly) else "")

答案 3 :(得分:0)

您的代码目前存在两个问题。

  1. 您正在使用其中将检查字符串是否'包含在给定的字符串中,无论它是否在最后。
  2. 您想使用str.endswith,例如if a.endswith(ly)

    1. 在代码中:
    2. us = [str(input("Enter a subject: "))] list.append(us)

      us是包含输入字符串的列表,而不仅仅是输入的字符串。然后,您将此列表添加到另一个列表中。相反,你的代码应该是 us = str(input("Enter a subject: "))

      (没有周围的括号)