字符串索引超出范围-带swapcase()函数的Python 3.x.x
我试图将由和输入给出的字符串的每一个字母大写。出于某种原因,它给了我一个错误“字符串索引超出范围”,我不知道为什么!范围是从0到字符串的长度,所以我想这是不可能的字符串索引超出范围-带swapcase()函数的Python 3.x.x,python,string,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:
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)
执行此操作时:
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)
执行此操作时:
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)
q=q[x]
:第一次这样做时(对于x=0
),你将q减少到q[0]
(一个字符),然后当x=1
,你再次这样做,你就会得到索引自动转换。“每隔一个字母大写”是什么意思?能否给出一个示例字符串和预期输出?您是否正在寻找类似于s1=”“.join([e if i%2 else e.upper()for i,e in enumerate(s)])
?q=q[x]
:第一次这样做(对于x=0
),您将q减少到q[0]
(一个字符),然后当x=1
,您再次这样做时,您将获得索引。“每隔一个字母大写”是什么意思?能否给出一个示例字符串和预期输出?您是否正在寻找类似于s1=”“.join的smth([e if i%2 else e.upper()for i,e in enumerate(s)])
?非常感谢!我真的很感激,我意识到这将是一个单字符的变量,并试图将其更改为q[x]=q[x].swapcase()``但这似乎也失败了。你的解释很有帮助!非常感谢!我真的很感激,我意识到这将是一个单字符的变量,并试图将其更改为q[x]=q[x].swapcase()``但这似乎也失败了。你的解释很有帮助!