字符串索引超出范围-带有swapcase()函数的Python 3.x.x

时间:2019-05-22 02:20:19

标签: python string

我正在尝试大写由和输入给出的字符串的其他每个字母。由于某种原因,它给我错误“字符串索引超出范围”,我不知道为什么!范围设置为0到字符串的长度,所以我想不可能!

s = input('Please enter a string: ')
p=s.lower()
o=s.upper()
q=p
k=len(s)
l=1

for x in range(0,k):
    if l%2==0:
        q=q[x].swapcase()
        l+=1
    else:
        l+=1

print(q)

1 个答案:

答案 0 :(得分:2)

执行此操作时:

 q=q[x].swapcase()

q变成一个字母。

下次您尝试以下操作:

q[1]

但是没有q[1],因为您将它写成一个字母。

这是python鼓励您避免创建索引变量,而是循环遍历项本身的几个原因之一。如果这样做,并为变量赋予更多描述性名称,则更容易发现此类错误。例如:

s = input('Please enter a string: ')
lower_case = s.lower()

new_string = ""

for index, letter in enumerate(lower_case):
    if index % 2 == 0:
        new_string += letter.swapcase()
    else:
        new_string += letter
print(new_string)