<p>不要这样做。这种格式化字符串的方法来自Python2.x,在Python3.x中有很多更好的方法来处理字符串格式化:</p>
<ul>
<li><a href="https://docs.python.org/3/library/stdtypes.html#str.format" rel="nofollow noreferrer">string.format()</a>和<a href="https://docs.python.org/3/library/string.html#formatspec" rel="nofollow noreferrer">format mini language</a></li>
<li><a href="https://www.python.org/dev/peps/pep-0498/" rel="nofollow noreferrer">pep 498 [3.6+]</a>或<a href="https://docs.python.org/3/reference/lexical_analysis.html#f-strings" rel="nofollow noreferrer">f-strings</a>以及<a href="https://docs.python.org/3/library/string.html#formatspec" rel="nofollow noreferrer">format mini language</a></li>
</ul>
<hr/>
<h2>您的代码有2个问题:</h2>
<pre><code>print(var1 + ' ' + (input('Enter a number to print')))
</code></pre>
<p>是,如果<code>var1</code>是一个字符串,它工作-如果不是,它崩溃:</p>
<pre><code>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'
</code></pre>
<p>你能做到的</p>
<pre><code>var1 = 8
print(var1 , ' ' + (input('Enter a number to print')))
</code></pre>
<p>但是你失去了格式化<code>var1</code>的能力。另外:<code>input</code>在<code>print</code>之前计算<em>,所以它的文本在一行,后面是<code>print</code>语句输出-为什么要把它们放在同一行呢?你知道吗</p>
<h2>更好:</h2>
<pre><code>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}*")
</code></pre>
<p>输出:</p>
<pre><code>00000008 * 'cool' *
00000008 * 'cool' *
00000008 * 'cool' *
8 * 'cool' *
</code></pre>
<p>迷你格式参数意味着:</p>
<pre><code>:>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
</code></pre>
<hr/>
<p>也看看<a href="https://docs.python.org/3/library/functions.html#print" rel="nofollow noreferrer">print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)</a>。它有几个选项来控制输出-例如,如果给定多个对象,使用什么作为分隔符:</p>
<pre><code>print(1,2,3,4,sep=" = ")
print( *[1,2,3,4], sep="\n") # *[...] provides the list elemes as single params to print
</code></pre>
<p>输出:</p>
<pre><code>1 = 2 = 3 = 4
1
2
3
4
</code></pre>