比较和打印嵌套循环中的元素

2024-07-03 06:24:41 发布

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

程序通过循环遍历word字符串来确定字符串word中的元素之一是否为辅音,然后每次迭代遍历word字符串,遍历consonants列表并比较word字符串中的当前元素是否等于consonant列表中的当前元素。你知道吗

如果是,则word字符串的当前元素是一个辅音,并打印该辅音(不是辅音的索引,而是实际的辅音,例如“d”。)

问题是,我得到的是:

1
1

我做错什么了?嵌套循环不应该这样工作吗?这样下面的循环就可以为上面循环中的每个元素迭代每个元素?也就是说,上面的每个索引使下面的循环遍历每个索引?你知道吗

这就是程序:

word = "Hello"

consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z']

for character in range(len(word)): 
    for char in range(len(consonants)): 
        if consonants[char] == word[character]: 
            consonant = word[character]
            print consonant

Tags: 字符串in程序元素列表forlenrange
1条回答
网友
1楼 · 发布于 2024-07-03 06:24:41

你误读了输出。字符是小写字母L,而不是数字1。你知道吗

换句话说,您的代码是按设计工作的。大写字母H不在consonants列表中,但Hello中的两个小写字母l。你知道吗

请注意,在这里使用set来表示consonants会更有效;您不必遍历整个列表,只需使用in来测试成员身份。这也适用于列表,但对于集合来说效率更高。如果将word值小写,还可以匹配H。你知道吗

最后但并非最不重要的一点,您可以直接循环word字符串,而不是使用range(len(word)),然后使用生成的索引:

word = "Hello"
consonants = set('bcdfghjklmnpqrstvwxz')

for character in word.lower():
    if character in consonants:
        print character

演示:

>>> word = "Hello"
>>> consonants = set('bcdfghjklmnpqrstvwxz')
>>> for character in word.lower():
...     if character in consonants:
...         print character
... 
h
l
l

相关问题 更多 >