此代码中最终显示的位置在哪里?

时间:2019-04-06 11:11:00

标签: python-3.x

该代码要求用户提供字符串输入并将大写字母转换为小写字母,反之亦然。输入:Rohit Tapadia,预期输出:rOHIT tAPADIA,实际输出:rOHIt TAPADIA。它应该完全执行swapcase()的作用。

    inp = input("Enter  ")
    for i in inp:
        inp_lst.append(i)
    print(inp_lst)
    for j in inp_lst:
        if j.isupper()==True:
            x=inp_lst.index(j)
            #print(x)
            #print(j)
            k = j.lower()
            #print(k)
            inp_lst[x]=k
            print(inp_lst[x])
        elif j.islower()==True:
            y=inp_lst.index(j)
            #print(y)
            #print(j)
            l = j.upper()
            inp_lst[y]=l
            print(inp_lst[y])
        else:
            z=inp_lst.index(j)
            #print(z)
            #print(j)
            inp_lst[z]=j
            print(inp_lst[z])
        print(''.join(inp_lst))```

2 个答案:

答案 0 :(得分:2)

您可以使用内置的swapcase() method分两行实现完全相同的操作:

inp = input("Enter  ")
print(inp.swapcase()) 

示例输入:

heLLo StackOverflow

输出:

HEllO sTACKoVERFLOW

演示:https://repl.it/@glhr/55548482

编辑:这是您的代码的可行且简化的实现。请注意,inp_lst是不需要的,因为您可以直接遍历字符串中的字符。您可以使用字符串串联将每个字符简单地添加到输出字符串中(不是outputString += j等同于outputString = outputString + j,它只是在字符串的末尾添加j)。

inp = input("Enter  ")
outputString = ""
for j in inp:
    if j.isupper():
            outputString += j.lower()
    elif j.islower():
            outputString += j.upper()
    else:
            outputString += j
print(outputString)

编辑2:代码中的问题是inp_lst.index(j),因为index()搜索字符j的第一个匹配项。因此,如果j='t',它将选择列表中第一个出现的t,并将其大写/小写,即使循环位于第二个出现的t上也是如此。这就是t中第一个"Rohit Tapadia"在输出中变为小写的原因。

答案 1 :(得分:2)

您也可以尝试这个

inp = input("Enter  ")
output="".join([char.lower() if  char.isupper() else char.upper() for char in inp ]) 

inp = "Rohit Tapadia"

输出将为

rOHIT tAPADIA