【问题标题】:Function output as integer (TypeError: must be str, not int)函数输出为整数(TypeError:必须是 str,而不是 int)
【发布时间】:2019-01-20 01:54:26
【问题描述】:

我是编程新手,从 Python 开始。 我正在尝试编写一个输出看起来像“|1|2”的函数

如果我将代码编写为:

def xbrd(int1,int2):
    print("|"+int1+"|"+int2)

输出有错误>> TypeError: must be str, not int

完整详情如下:

TypeError                                 Traceback (most recent call last) <ipython-input-43-e3178cb02070> in <module>()
----> 1 xbrd(1,2) <ipython-input-42-07f9ddd5a2b8> in xbrd(int1, int2)
      1 def xbrd(int1,int2):
----> 2     print("|"+int1+"|"+int2) TypeError: must be str, not int

现在,如果将其编写如下,那么我将获得所需的输出。

def xbrd(int1,int2):
    print(f'|{int1}|{int2}')

这是否意味着在以后的代码输出中以字符串形式出现?我需要什么输出为整数?

【问题讨论】:

    标签: python function integer output


    【解决方案1】:

    这是因为所有的字符串格式化方式都会变成str,因为它们会变成字符串,例如:

    >>> a=1
    >>> f'{a}'
    '1'
    >>> '%s'%a
    '1'
    >>> '{}'.format(a)
    '1'
    >>> 
    

    所以你的代码可以工作,所以这里是我上面提到的所有格式化方式的代码:

    def xbrd(int1,int2):
        print(f'|{int1}|{int2}')
    

    def xbrd(int1,int2):
        print('|%s|%s'%(int1,int2))
    

    def xbrd(int1,int2):
        print('|{}|{}'.format(int1,int2))
    

    请注意,还有另一种方法,没有字符串格式或任何东西,类似于第一个示例,但它只是使用 str 将整数转换为字符串:

    def xbrd(int1,int2):
        print("|"+str(int1)+"|"+str(int2))
    

    【讨论】:

    • 感谢您的回答。我认为我的收获是任何打印输出都将是“str”
    • @yogeshmalhotra 很好,这是正确的,很乐意提供帮助,??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2018-07-23
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多