Вывод функции в виде целого числа (TypeError: должно быть str, а не int) - PullRequest
0 голосов
/ 20 января 2019

Я новичок в программировании и начал с Python.Я пытаюсь написать функцию с выводом, который выглядит как «| 1 | 2»

Если я пишу код как:

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

Вывод содержит ошибку >>TypeError: должно быть str, а не 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}')

Означает ли это, что в последующем выводе кода будет строка?что мне нужно, чтобы получить вывод в виде целого числа?

1 Ответ

0 голосов
/ 20 января 2019

Это потому, что все способы форматирования строки превращают его в 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...