type transfer int to str

时间:2018-04-05 21:39:24

标签: python types

问题:
   给定一个包含大写字母和整数位(从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

我不明白原因。

2 个答案:

答案 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