Python 3.x 此代码中最终显示的问题在哪里?
代码要求用户提供字符串输入,并将大写转换为小写,反之亦然。输入:Rohit Tapadia,预期输出:Rohit Tapadia,实际输出:Rohit Tapadia。它应该像swapcase那样做Python 3.x 此代码中最终显示的问题在哪里?,python-3.x,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:
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))```
使用内置的,您可以在两行中实现完全相同的功能: 输入示例:
heLLo StackOverflow
输出:
HEllO sTACKoVERFLOW
演示:
编辑:这里是一个工作和简化的代码实现。请注意,不需要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.indexj,因为索引搜索第一次出现的字符j。因此,如果j='t',它将选择列表中第一个出现的t,并将其大写/小写,即使循环位于第二个出现的t。这就是为什么Rohit Tapadia中的第一个t在输出中变为小写。您可以通过内置的两行代码实现完全相同的效果: 输入示例:
heLLo StackOverflow
输出:
HEllO sTACKoVERFLOW
演示:
编辑:这里是一个工作和简化的代码实现。请注意,不需要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.indexj,因为索引搜索第一次出现的字符j。因此,如果j='t',它将选择列表中第一个出现的t,并将其大写/小写,即使循环位于第二个出现的t。这就是为什么Rohit Tapadia中的第一个t在输出中变为小写。您也可以试试这个
inp = input("Enter ")
output="".join([char.lower() if char.isupper() else char.upper() for char in inp ])
inp=Rohit Tapadia
输出将是
rOHIT tAPADIA你也可以试试这个
inp = input("Enter ")
output="".join([char.lower() if char.isupper() else char.upper() for char in inp ])
inp=Rohit Tapadia
输出将是
rOHIT tAPADIA下面的输出是您期望的输出输入abCD['a'、'b'、'C'、'D']0A abCD 1B b b abCD 2C abCD 3D abCD我鼓励OP包括产生不希望的输出的明确输入示例。请包括代码的输出以及所需的输出。@glhr输入:rOHIT tAPADIA,预期输出:rOHIT tAPADIA,实际输出:rOHIT tAPADIA下面的输出是您预期的输出输入abCD['a','b','C','D']0A AbCD 1B b AbCD 2C AbCD 3D AbCD我鼓励OP包含产生不需要的输出的输入的明确示例。请包括代码的输出以及所需的输出。@glhr输入:Rohit Tapadia,预期输出:Rohit Tapadia,实际输出:Rohit TAPADIAYes,但我想自己生成一个函数来实现它。上面是函数内部的代码块。无论如何谢谢你!谢谢@glhr。简单而优雅!:是的,但我想自己生成一个函数来实现它。上面是函数内部的代码块。无论如何谢谢你!谢谢@glhr。简单而优雅!: