Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串索引超出范围-带swapcase()函数的Python 3.x.x_Python_String - Fatal编程技术网

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

字符串索引超出范围-带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:

我试图将由和输入给出的字符串的每一个字母大写。出于某种原因,它给了我一个错误“字符串索引超出范围”,我不知道为什么!范围是从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)
执行此操作时:

 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()``但这似乎也失败了。你的解释很有帮助!