3 回答

TA贡献1851条经验 获得超4个赞
您i既用作循环变量(递增整数),又用作容纳字符串的变量。这就是为什么它不起作用。尝试使用此功能的固定代码:
finaloutput = ''
i = 0
for e in word:
if i%2 == 0:
finaloutput = finaloutput + e.upper()
else:
finaloutput = finaloutput + e.lower()
i = i + 1
return finaloutput
您还可以进行列表理解:
''.join([e.lower() if c%2 else e.upper() for c,e in enumerate(a)])

TA贡献1770条经验 获得超3个赞
问题是您要遍历单词并将其字母用作索引,这样可以解决此问题:
def farrange(word):
finaloutput = ''
for i, l in enumerate(word):
if i%2 == 0:
finaloutput += l.upper()
else:
finaloutput += l.lower()
return finaloutput
例如,一种更pythonic的方式:
def arrange(word):
op = (
str.upper,
str.lower
)
return "".join(op[x%2](l) for x, l in enumerate(word))

TA贡献1829条经验 获得超7个赞
谢谢大家的解释和快捷方式!如果我使用while循环怎么办?
def farrange(word):
finaloutput = ''
i = 0
while i < len(word):
if i%2 == 0:
finaloutput = finaloutput + word[i].upper()
else:
finaloutput = finaloutput + word[i].lower()
i = i + 1
return finaloutput
print(farrange("abc")
在这种情况下,我将i用作循环变量,并且它的相同值将作为单词的索引。因此,我认为这应该可行,但是这次,我只得到第一封信。没有其他的。为了检查计数器是否没有卡在while循环中,我将while条件更改为,while i < 3.但是没有用。再次返回输出为a。
添加回答
举报