首页 > 解决方案 > 将整数转换为字符串,然后再转换回整数

问题描述

我正在做这个 python 练习,目标是让用户输入一个整数,并且函数应该能够重新排列(降序)我决定先将整数转换为字符串,这样我就可以从中迭代结果存储在列表中。但是当我尝试将其转换回整数时,它不会被转换。

如下面的代码所示,我尝试打印变量的类型,以便查看它是否被转换。

def conversion(nums):


    int_to_str = str(nums) 
    list_int = []
    ans = []

    for x in int_to_str: 
        list_int.append(x)


    list_int.sort(reverse=True)   

    ans = list_int          
    print (type(ans))
    print(ans)
    ans = ''.join(list_int) 
    print(type(ans))
    print(ans)



    str_to_int = [int(x) for x in list_int]  # LIST COMPREHENSION to convert 
                                             # string back to integer type 
    print(type(str_to_int))
    print(str_to_int)

    final = ''.join(str_to_int)
    print(type(final))
    print(final)
    enter code here

    <class 'list'>
    ['9', '5', '4', '2', '1', '0']
    <class 'str'>
    954210
    <class 'list'>
    [9, 5, 4, 2, 1, 0]


    TypeError: sequence item 0: expected str instance, int found

标签: python-3.x

解决方案


如果我理解您的问题,您将收到一个输入(假设某个 int 的字符串表示形式)并且您想将该输入转换为整数列表,然后反向排序并返回。如果是这样的话:

def reverse_numeric_input(x):
    try:
        if type(x) != str:
            x=str(x)
        lst=[int(i) for i in x]
        lst.sort(reverse=True)
        return "".join([str(i) for i in lst])
    except Exception as e:
        print("%s error coverting ur input caused by: %s" % (e.__class__.__name__, str(e)))     

您发布的代码中的问题在于final = ''.join(str_to_int)您调用时的这一行join,加入的项目必须str()首先转换。希望有帮助。


推荐阅读