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

2024-09-30 14:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新的编码,所以我很抱歉-我相信这个解决方案可以找到只要如果语句和for语句。你知道吗

我有一个用户输入的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)

我的代码目前只会说ly是一个副词;但是,它不会说ly是一个副词。任何帮助都将不胜感激。你知道吗


Tags: 字符串用户in编码列表for结尾ly
3条回答

当前代码中有两个问题。你知道吗

  1. 您使用的是which,它将检查字符串'ly'是否包含在给定的字符串中,无论它是否在末尾。你知道吗

你想用str.endswith公司,例如if a.endswith(ly)

  1. 在代码中:

us = [str(input("Enter a subject: "))] list.append(us)

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

(无周围支架)

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 "")

你的主要问题是你有listlist,而不是liststr,因为这行:

us = [str(input("Enter a subject: "))]

这些括号将str包装起来,形成一个单元素list。因此,如果您键入foobarly,然后ly,(我们将跳过所有10个),您将得到一个list

[["foo"], ["barly"], ["ly"]]

当你可能预料到:

["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"):。你知道吗

相关问题 更多 >