首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字符串交换大写和小写

用字符串交换大写和小写
EN

Stack Overflow用户
提问于 2016-03-27 12:11:53
回答 12查看 27.9K关注 0票数 5

我想把字符串的字符从小写改为大写。

我的代码在下面,我的代码的输出是a;请告诉我哪里错了,并解释为什么?提前感谢

代码语言:javascript
复制
test = "AltERNating"

def to_alternating_case(string):
    words = list(string)
    for word in words:
        if word.isupper() == True:
            return word.lower()
        else:
            return word.upper()  

print to_alternating_case(test)
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2016-03-27 12:22:39

如果要反转该字符串的情况,请尝试如下:

代码语言:javascript
复制
>>> 'AltERNating'.swapcase()
'aLTernATING'
票数 16
EN

Stack Overflow用户

发布于 2016-03-27 12:25:28

这有两个答案:一个简单的答案和一个困难的答案。

easy

Python有一个内置的函数来完成这个任务,我不太记得它是什么,而是类似于

代码语言:javascript
复制
string.swapcase()

The hard one

你定义了自己的功能。创建函数的方式是错误的,因为迭代字符串将逐个字母返回,您只返回第一个字母,而不是继续迭代。

代码语言:javascript
复制
def to_alternating_case(string):
    temp = ""
    for character in string:
        if character.isupper() == True:
            temp += character.lower()
        else:
            temp += word.upper()
    return temp
票数 3
EN

Stack Overflow用户

发布于 2016-03-27 12:15:36

这是因为函数只返回第一个字符。我的意思是return关键字破坏了您的for循环。

另外,请注意,没有必要通过运行words = list(string)将字符串转换为列表,因为可以对字符串进行迭代。就像您对列表所做的那样。

如果您正在寻找一个算法解决方案,而不是swapcase(),那么请这样修改您的方法:

代码语言:javascript
复制
test = "AltERNating"

def to_alternating_case(string):
    res = ""
    for word in string:
        if word.isupper() == True:
            res = res + word.lower()
        else:
            res = res + word.upper()
    return res


print to_alternating_case(test)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36247173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档