计算元音并打印重复的元音

时间:2019-06-17 03:58:20

标签: python python-3.x

我有一个代码,可以计算用户输入的元音数量并打印出来。此外,我还想做的是打印出重复的元音。

该代码的第一部分运行良好,并且确实在用户输入的内容中打印出了元音的数量,但是第二部分似乎不起作用。我正在附上我提出的代码。

user_name = input('Please enter your name: ')

count = 0

for vowels in user_name:

    if vowels.lower() == "a" or vowels.lower() == "e" or vowels.lower() == "i" or vowels.lower() == "o" \
            or vowels.lower() == "u":

        count = count + 1

print(f'Number of vowels are {count}')

dupes = ""

for rep_vows in user_name:

    if rep_vows not in dupes:
       # dupes.append(rep_vows)
        print(dupes)

4 个答案:

答案 0 :(得分:0)

为计数事物,Python具有Counter字典,下面是一些示例:

>>> from collections import Counter
>>> import re 

>>> # Count vowels
>>> Counter(re.findall('[aieouAEIOU]', 'Daniel Hilst'))
Counter({'i': 2, 'a': 1, 'e': 1})
>>> # Summing up
>>> sum(Counter(re.findall('[aieouAEIOU]', 'Daniel Hilst')).values())
4

>>> # Count words
>>> Counter(re.findall(r'\w+', 'some text'))
Counter({'some': 1, 'text': 1})
>>>

您可以在收藏包文档https://docs.python.org/3.7/library/collections.html

中找到该文档。

答案 1 :(得分:0)

我认为原生Python计数器确实是您应该在这里使用的。这只是一本光荣的字典,但是它确实减少了为实现目标而需要编写的代码量。


from collections import Counter #import Counter from Python's collections standard library

user_name = input('Please enter your name: ')

vowels = ['a','e','i','o','u'] # create a list of your vowels

counter = Counter() # initialize counter

for letter in user_name:
    if letter in vowels:
        print(letter)
        counter[letter]+=1

print(counter)

答案 2 :(得分:0)

您的解决方案还可以,但重复项应该是(重复元音的)列表,您可以对已经看到的元音使用另一个列表;因此,当您看到元音时,请检查该元音是否已经存在。如果看到了元音,则将其附加到dupes上,否则,将其附加至seed,这样当重复一个元音时,会将其附加到dupes上。

最后,您打印出被骗名单。

user_name = input('Please enter your name: ')

count = 0

for vowels in user_name:

    if vowels.lower() == "a" or vowels.lower() == "e" or vowels.lower() == "i" or vowels.lower() == "o" or vowels.lower() == "u":

        count = count + 1

print(f'Number of vowels are {count}')

seen = []
dupes = []

for rep_vows in user_name:

    if rep_vows not in seen:
        seen.append(rep_vows)
    else:
        dupes.append(rep_vows)

print(dupes)

答案 3 :(得分:0)

如果要获取副本,则应检查是否已将新的元音添加到找到的元音列表(或字符串)中。

一个简单的修改就会为您提供

duples = ''
for rep_vows in user_name:
   if rep_vows in duples:
     print(rep_vows)
   if rep_vows.lower() in "aeiou": 
     duples += rep_vows

由于您知道如何使用in,因此可以将第一部分更改为:

for vowels in user_name:
    if vowels.lower() in "aeiou":
        count = count + 1