首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将输入字符串的字母与元音列表进行比较,并逐字母输出结果

将输入字符串的字母与元音列表进行比较,并逐字母输出结果
EN

Stack Overflow用户
提问于 2018-03-06 16:55:46
回答 1查看 331关注 0票数 0

在下面的代码中,用户可以添加任何值。然后我有两个不同的名单。我想知道列表1或列表2中有什么东西是对的还是错的

代码语言:javascript
运行
复制
#enter code here 
n= (input("enter any alphabate: "))
list1= ['a','e','i','o','u'];
list2 = ['A','E','I','O','U'];
for strng in (n):
 if n == list1 or n == list2:
    print("number is  vowel")
 else:
    print("number is not vowel")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-06 17:06:19

以下是您代码的简化版本。

代码语言:javascript
运行
复制
mystr = input("Enter any letters: ")

vowels = set('aeiou')

for idx, i in enumerate(mystr, 1):
    if i.lower() in vowels:
        print('{0}: Letter {1} is a vowel'.format(idx, i))
    else:
        print('{0}: Letter {1} is not a vowel'.format(idx, i))

解释

  • 使用set进行比较是很好的做法,因为它会产生O(1)复杂度查找。
  • 您可以使用str.format()将您的信包含在字符串中。
  • 转换为小写,所以不需要2组元音。
  • 使用enumerate提取字母计数。

这可以进一步缩短:

代码语言:javascript
运行
复制
for idx, i in enumerate(mystr, 1):
    print('{0}: Letter {1} is{2}a vowel'\
          .format(idx, i, ' ' if i.lower() in vowels else ' not '))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49136149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档