Не. Этот способ форматирования строк взят из Python 2.x, и в Python 3.x есть много способов справиться с форматированием строк:
В вашем коде 2 проблемы:
print(var1 + ' ' + (input('Enter a number to print')))
- если строка var1
работает, если нет - вылетает:
var1 = 8
print(var1 + ' ' + (input('Enter a number to print')))
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(var1 + ' ' + (input('Enter a number to print')))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Вы могли бы сделать
var1 = 8
print(var1 , ' ' + (input('Enter a number to print')))
но потом вы потеряли возможность форматировать var1
. Кроме того: input
оценивается перед print
, поэтому его текст находится в одной строке, за которым следует вывод print
-statements - зачем тогда ставить их в одну строку?
Лучше:
var1 = 8
# this will anyhow be printed in its own line before anyway
inp = input('Enter a number to print')
# named formatting (you provide the data to format as tuples that you reference
# in the {reference:formattingparams}
print("{myvar:>08n} *{myInp:^12s}*".format(myvar=var1,myInp=inp))
# positional formatting - {} are filled in same order as given to .format()
print("{:>08n} *{:^12s}*".format(var1,inp))
# f-string
print(f"{var1:>08n} *{inp:^12s}*")
# showcase right align w/o leading 0 that make it obsolete
print(f"{var1:>8n} *{inp:^12s}*")
Выход:
00000008 * 'cool' *
00000008 * 'cool' *
00000008 * 'cool' *
8 * 'cool' *
Параметры мини-формата означают:
:>08n right align, fill with 0 to 8 digits (which makes the > kinda obsolete)
and n its a number to format
:^12s center in 12 characters, its a string
Посмотрите также print (* objects, sep = '', end = '\ n', file = sys.stdout, flush = False) . У него есть несколько вариантов управления выводом - например, что использовать в качестве разделителя, если дано несколько вещей:
print(1,2,3,4,sep="--=--")
print( *[1,2,3,4], sep="\n") # *[...] provides the list elemes as single params to print
Выход:
1--=--2--=--3--=--4
1
2
3
4