首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试编写代码,但收到错误:IndexError: string index out of range

尝试编写代码,但收到错误:IndexError: string index out of range
EN

Stack Overflow用户
提问于 2020-11-29 05:48:28
回答 3查看 49关注 0票数 0

我正在尝试写一段简单的代码来检查每个字母: a,e,i,o,u在字符串中存在的次数,但我得到的错误是:字符串索引超出范围。我能做些什么来解决这个问题呢?代码是:

代码语言:javascript
复制
def targ6(str6):
  x = ['a','e','i','o','u']
  s = ""
  for tav in str6:
    for y in range(len(x)):
      if x[y] == tav:
        s[y] += 1
  for y in range(len(x)):
    return ('the letter'+x[tav]+'appears'+s[tav]+'times')


#main
string6=input("enter a string")
print(targ6(string6))
EN

回答 3

Stack Overflow用户

发布于 2020-11-29 06:03:22

试试这个:

代码语言:javascript
复制
def targ6(str6):
  x = ['a','e','i','o','u']
  s = {k:0 for k in x}
  for tav in str6:
    for y in range(len(x)):
      if x[y] == tav:
        s[tav] += 1 # s[x[y]] += 1
  return s


#main
string6="enter a string"
print(targ6(string6))

输出:

代码语言:javascript
复制
{'a': 1, 'e': 2, 'i': 1, 'o': 0, 'u': 0}
票数 1
EN

Stack Overflow用户

发布于 2020-11-29 06:01:16

代码语言:javascript
复制
from collections import Counter

def targ6(str6):
    list1 = []
    x = ['a','e','i','o','u']
    for i in str6:  #For character in string
        if i in x:     #If character in vowel list
            list1.append(i)       #Append the character to a list

    for k, v in Counter(list1).items(): #Counter returns a dict with each element's count
        print(k, "appears", v, "times in", str6)
string6 = input("enter a string :")
targ6(string6)

示例:-

代码语言:javascript
复制
enter a string :Hi How are you? Fine?
i appears 2 times in Hi How are you? Fine?
o appears 2 times in Hi How are you? Fine?
a appears 1 times in Hi How are you? Fine?
e appears 2 times in Hi How are you? Fine?
u appears 1 times in Hi How are you? Fine?
票数 0
EN

Stack Overflow用户

发布于 2020-11-29 06:02:23

  • 你不能在Python语言中原地修改字符串(比如s),而且它们的工作方式肯定不像计数器之类的。
  • 如果你发现自己在用Python语言编写for ... in range(len(...)),请停止你正在做的事情。会有更好的方法。
  • 一个函数只能返回一次。因为您无论如何都要打印出一些东西,所以我冒失地用print.
  • Use、内置函数和方法交换了return!仔细阅读Python文档,它很容易理解,您不必记住所有内容,只需对事物有个感觉,这样您就知道将来该往哪里看了。

代码语言:javascript
复制
def count_vowels(string):
    for vowel in 'aeiou':
        print('the letter', vowel, 'appears', string.count(vowel), 'times')

input_string = input("enter a string: ")
count_vowels(input_string)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65054798

复制
相关文章

相似问题

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