我必须从给定的字符串中删除大写字母
当我尝试从给定的字符串中删除大写字母时,返回函数存在于我编写的用于打印输出原因的函数的末尾,该结果导致要打印的最后一个字符。有没有更好的解决方法?
def remove_capitals(a):
for i in a:
if ord(i)>64 and ord(i)<91:
pass
else:
print(i,end='')
return i
print(remove_capitals("A1H5J3ETD"))
预期:153 实际:153D
答案 0 :(得分:2)
您在内部打印并打印退货-您无需测试即可返回最后一个i
。..这是您输入的最后一个字母。
修改:
修复:
def remove_capitals(a):
non_upper = []
for i in a:
if not i.isupper():
non_upper.append(i)
return ''.join(non_upper)
print(remove_capitals("A1H5J3ETD"))
输出:
153
您还可以附加到字符串-但是字符串是不可变的,因此它会破坏旧的字符串并创建新的更长的版本-这很浪费:
def remove_capitals(a):
non_upper = ""
for i in a:
if not i.isupper():
non_upper += i
return non_upper
唯一的好处是,它不使用列表-速度较慢且占用大量内存。
答案 1 :(得分:0)
使用列表理解
def remove_capitals(a):
return ''.join([x for x in a if ord(x)<64 or ord(x)>91]))
答案 2 :(得分:0)
由于函数末尾的return i语句,返回了最后一个不需要的字符。如果您只想打印出非大写字母,则返回Return None并仅调用该函数(不执行print(remove_capitals(“ A1H5J3ETD”))):remove_capitals(“ A1H5J3ETD”)应该可以解决问题。