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

时间:2015-02-25 23:45:06

标签: python python-2.7 for-loop

程序通过循环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

1 个答案:

答案 0 :(得分:6)

误读输出。字符是字母L 小写,而不是数字1。

换句话说,您的代码按设计工作。截止字母H不在consonants列表中,但l 中的两个小写字母Hello

请注意,在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

演示:

{{1}}