获取IndexError:python中的字符串索引超出范围

时间:2018-12-26 07:15:04

标签: python python-3.x string

在Python中获取 IndexError:超出范围的字符串索引,我是python的初学者,正尝试制作一个计入大写和小写字母总数的程序,并且我还尝试了一些解决方案,例如删除字符串的空格为string.replace(" ", ""),但再次出错,

我的代码

string = input('Enter string upto 25 words: ')
if len(string) > 25:
  print('Please enter a string less than 25 words.')
else:
  string.replace(" ", "")
  total_upr = 0
  total_lwr = 0
  i = 0
  while i < 25:
    print(i)
    if string[i].islower():
      total_upr += 1
    elif string[i].isupper():
      total_lwr += 1
    i += 1
  print(f"'{string}' contains {total_lwr} lower-case letters and {total_upr} upper-case letters.")

3 个答案:

答案 0 :(得分:3)

尝试使用len(string)而不是25,因为这里要遍历所有25个整数。但是在您的情况下,没有强制性要求您的字符串中应包含25个字符,可以是25个字符或少于25个字符。因此,当其少于25个字符并且您尝试使用第25个字符时,它将显示错误:

而不是:

while i < 25 :

尝试:

while i < len(string)

答案 1 :(得分:2)

您也可以尝试以下方法:

string = input('Enter string upto 25 words: ')
if len(string) > 25:
    print('Please enter a string less than 25 words.')
else:
    total_lwr = sum(map(str.islower, string))
    total_upr = sum(map(str.isupper, string))

您无需为此花费时间,也无需更换任何东西。更少的代码。 :)

答案 2 :(得分:0)

期间应如下所示:

while i < len(string):

代码:

string = input('Enter string upto 25 words: ')
if len(string) > 25:
  print('Please enter a string less than 25 words.')
else:
  string.replace(" ", "")
  total_upr = 0
  total_lwr = 0
  i = 0
  while i < len(string):
    print(i)
    if string[i].islower():
      total_lwr += 1
    elif string[i].isupper():
      total_upr += 1
    i += 1
  print(f"'{string}' contains {total_lwr} lower-case letters and {total_upr} upper-case letters.")