该代码要求用户提供字符串输入并将大写字母转换为小写字母,反之亦然。输入: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))```
答案 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