我有一个代码,可以计算用户输入的元音数量并打印出来。此外,我还想做的是打印出重复的元音。
该代码的第一部分运行良好,并且确实在用户输入的内容中打印出了元音的数量,但是第二部分似乎不起作用。我正在附上我提出的代码。
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)
答案 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