问题:
给定一个包含大写字母和整数位(从0到9)的字符串,写一个函数以按顺序返回字母,后跟数字之和。
我的代码:
import re
class Solution:
def rearrange(self, str):
# Write your code here
if str == "":
return str
sum = 0
letter = []
for i in range(len(str)):
if re.search("([A-Z])", str[i]):
letter.append(str[i])
else:
sum += int(str[i])
letsort = sorted(letter)
letstr = "".join(letsort)
result = letstr + str(sum)
return result
错误:
Traceback (most recent call last):
File "/code/Main.py", line 20, in
ans = solution.rearrange(str)
File "/code/Solution.py", line 20, in rearrange
result = letstr + str(sum)
TypeError: 'str' object is not callable
我不明白原因。
答案 0 :(得分:0)
str
是Python中的保留字,您也可以通过命名rearrange()
第二个参数str
来覆盖它。更改rearrange()
第二个参数的名称将起到作用。
答案 1 :(得分:0)
您已将变量命名为str
- 与内置函数的名称相同,以便转换为字符串。你需要重命名它,试试这个:
import re
class Solution:
def rearrange(self, str_in):
# Write your code here
if str_in == "":
return str_in
sum = 0
letter = []
for i in range(len(str_in)):
if re.search("([A-Z])", str_in[i]):
letter.append(str_in[i])
else:
sum += int(str_in[i])
letsort = sorted(letter)
letstr = "".join(letsort)
result = letstr + str(sum)
return result