在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.")
答案 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.")