繁体   English   中英

代码没有像我期望的那样交换案例

[英]Code isn't swapping cases as I expect it to

我写了一些代码来交换字符串的大小写,但它似乎做得很不一致。 我希望你们中的一些人能澄清什么是错的。 作为记录,我知道swapcase()方法,但我最初的尝试是测试我如何在没有它的情况下解决问题。 无需再费周折:

p = "Www.HackerRank.com → wWW.hACKERrANK.COM"
p1 = p.split(" ")
n = []

for i in p1:
    item = list(p1[p1.index(i)])
    for i in item:
        if i.isalpha()==True:
            if i.isupper()==True:
                item[item.index(i)] = i.lower()
            elif i.islower()==True:
                item[item.index(i)] = i.upper()
        else: pass
    n.append(item)

for i in n:
    n[n.index(i)] = "".join(n[n.index(i)])

n = " ".join(n)

这就是代码。 初始字符串p"Www.HackerRank.com → wWW.hACKERrANK.COM" 然而,最终结果是"WWw.hACKErRANK.COM → wwW.HackeRrank.com"

所以我们有:

"Www.HackerRank.com → wWW.hACKERrANK.COM" = p

"WWw.hACKErRANK.COM → wwW.HackeRrank.com" = n

如您所见,某些字母已正确转换,而其他字母则没有。 是否可以修复代码以便我实现我想要的?

我的建议是直接遍历字符串的字母,而不是先将其拆分为单词:

positive = "Www.HackerRank.com → wWW.hACKERrANK.COM"
negative = []
for letter in positive:
    if letter.isalpha():
        if letter.isupper():
            negative.append(letter.lower())
        else:
            negative.append(letter.upper())
    else:
        negative.append(letter)
        
negative = "".join(negative)

请尝试使用有意义的名称(这会让您在一两个月内重新访问自己的代码时更轻松)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM