为了账号安全,请及时绑定邮箱和手机立即绑定

大写备用字母

大写备用字母

呼唤远方 2021-04-09 06:58:17
我想为任何给定的单词写一个备用的大写字母。所以我创建下面的函数。但是问题在于它不返回任何值。相反,我觉得它陷入了无限循环。def farrange(word):finaloutput = ''i = 0for i in word:    if i%2 == 0:        finaloutput = finaloutput + word[i].upper()            else:                    finaloutput = finaloutput + word[i].lower()        i = i + 1   return finaloutput我知道还有其他方法可以解决问题。我使用了另一种元组拆包的方式。但是我想知道为什么会这样吗?
查看完整描述

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)])


查看完整回答
反对 回复 2021-04-13
?
德玛西亚99

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))


查看完整回答
反对 回复 2021-04-13
?
吃鸡游戏

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。


查看完整回答
反对 回复 2021-04-13
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号