如何才能在同一行上同时打印多个内容(固定文本和/或变量值)?
- 2024-12-09 08:31:00
- admin 原创
- 100
问题描述:
我有一些如下代码:
score = 100
name = 'Alice'
print('Total score for %s is %s', name, score)
我希望它打印出来Total score for Alice is 100
,但我得到的却是Total score for %s is %s Alice 100
。如何才能让所有内容以正确的顺序和正确的格式打印出来?
另请参阅:如何在同一行上一次打印多个内容?;如何将变量的值放入字符串中(将其插入到字符串中)?
解决方案 1:
有很多方法可以做到这一点。要使用%
-formatting 修复当前代码,您需要传入一个元组:
将其作为元组传递:
print("Total score for %s is %s" % (name, score))
具有单个元素的元组看起来像('this',)
。
以下是其他一些常见的方法:
将其作为字典传递:
print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})
还有新样式的字符串格式,可能更容易阅读:
使用新式字符串格式:
print("Total score for {} is {}".format(name, score))
使用带有数字的新式字符串格式(对于重新排序或多次打印相同的数字很有用):
print("Total score for {0} is {1}".format(name, score))
使用具有明确名称的新式字符串格式:
print("Total score for {n} is {s}".format(n=name, s=score))
连接字符串:
print("Total score for " + str(name) + " is " + str(score))
我认为最明显的有两点:
只需将值作为参数传递:
print("Total score for", name, "is", score)
如果不想print
在上面的例子中自动插入空格,请更改sep
参数:
print("Total score for ", name, " is ", score, sep='')
如果您使用的是 Python 2,则无法使用最后两个,因为print
不是 Python 2 中的函数。但是,您可以从中导入此行为__future__
:
from __future__ import print_function
使用 Python 3.6 中的新
f
字符串格式:
print(f'Total score for {name} is {score}')
解决方案 2:
有很多种方法可以打印。
我们来看另一个例子。
a = 10
b = 20
c = a + b
#Normal string concatenation
print("sum of", a , "and" , b , "is" , c)
#convert variable into str
print("sum of " + str(a) + " and " + str(b) + " is " + str(c))
# if you want to print in tuple way
print("Sum of %s and %s is %s: " %(a,b,c))
#New style string formatting
print("sum of {} and {} is {}".format(a,b,c))
#in case you want to use repr()
print("sum of " + repr(a) + " and " + repr(b) + " is " + repr(c))
EDIT :
#New f-string formatting from Python 3.6:
print(f'Sum of {a} and {b} is {c}')
解决方案 3:
使用:.format()
:
print("Total score for {0} is {1}".format(name, score))
或者:
// Recommended, more readable code
print("Total score for {n} is {s}".format(n=name, s=score))
或者:
print("Total score for" + name + " is " + score)
或者:
print("Total score for %s is %d" % (name, score))
或者: 从Python 3.6f-string
格式化:
print(f'Total score for {name} is {score}')
可以使用repr
并自动''
添加:
print("Total score for" + repr(name) + " is " + repr(score))
# or for advanced:
print(f'Total score for {name!r} is {score!r}')
解决方案 4:
在 Python 3.6 中,f-string
更加干净。
在早期版本中:
print("Total score for %s is %s. " % (name, score))
在 Python 3.6 中:
print(f'Total score for {name} is {score}.')
会做。
它更加高效,更加优雅。
解决方案 5:
保持简单,我个人喜欢字符串连接:
print("Total score for " + name + " is " + score)
它适用于 Python 2.7 和 3.X。
注意:如果分数是int,则应将其转换为str:
print("Total score for " + name + " is " + str(score))
解决方案 6:
只需按照
grade = "the biggest idiot"
year = 22
print("I have been {} for {} years.".format(grade, year))
或者
grade = "the biggest idiot"
year = 22
print("I have been %s for %s years." % (grade, year))
忘记所有其他的,否则大脑将无法映射所有的格式。
解决方案 7:
尝试一下:
print("Total score for", name, "is", score)
解决方案 8:
使用f-string
:
print(f'Total score for {name} is {score}')
或者
使用.format
:
print("Total score for {} is {}".format(name, score))
解决方案 9:
print("Total score for %s is %s " % (name, score))
%s
可以替换为%d
或%f
解决方案 10:
如果score
是数字,那么
print("Total score for %s is %d" % (name, score))
如果分数是字符串,则
print("Total score for %s is %s" % (name, score))
如果分数是数字,那么它就是%d
,如果分数是字符串,那么它就是%s
,如果分数是浮点数,那么它就是%f
解决方案 11:
最简单的方法如下
print(f"Total score for {name} is {score}")
只需在前面加一个“f”即可。
解决方案 12:
这是我的做法:
print("Total score for " + name + " is " + score)
for
请记住在 之后和 之前和之后留一个空格is
。
解决方案 13:
这可能是casting issue
。Casting syntax
当您尝试组合两个不同的 时,就会发生这种情况types of variables
。由于我们无法将 a 转换string
为integer
或float
,因此我们必须将我们的 转换integers
为string
。您可以这样做:str(x)
。要转换为整数,它是:int(x)
,而浮点数是float(x)
。我们的代码将是:
print('Total score for ' + str(name) + ' is ' + str(score))
还有!运行此程序snippet
以查看如何转换不同 的表格types of variables
!
<table style="border-collapse: collapse; width: 100%;background-color:maroon; color: #00b2b2;">
<tbody>
<tr>
<td style="width: 50%;font-family: serif; padding: 3px;">Booleans</td>
<td style="width: 50%;font-family: serif; padding: 3px;"><code>bool()</code></td>
</tr>
<tr>
<td style="width: 50%;font-family: serif;padding: 3px">Dictionaries</td>
<td style="width: 50%;font-family: serif;padding: 3px"><code>dict()</code></td>
</tr>
<tr>
<td style="width: 50%;font-family: serif;padding: 3px">Floats</td>
<td style="width: 50%;font-family: serif;padding: 3px"><code>float()</code></td>
</tr>
<tr>
<td style="width: 50%;font-family: serif;padding:3px">Integers</td>
<td style="width: 50%;font-family: serif;padding:3px;"><code>int()</code></td>
</tr>
<tr>
<td style="width: 50%;font-family: serif;padding: 3px">Lists</td>
<td style="width: 50%font-family: serif;padding: 3px;"><code>list()</code></td>
</tr>
</tbody>
</table>
运行代码片段Hide results展开片段
解决方案 14:
print(f"Total score calculation complete, {name=}, {score=}")
# this will print:
# Total score calculation complete, name='Alice', score=100
请注意,这会打印name='Alice'
,而不仅仅是'Alice'
!
所有功能:
您可以打印变量名称和变量值。这对于调试打印非常有用。如果您不需要某个变量,请省略
=
符号。如果你重命名、删除或添加任何调试变量,此打印行将保持正确
不用担心对齐问题。如果你有多个变量,那么第 4 个参数是
score
还是age
?好吧,你不必担心,无论如何它都是正确的。请注意,这仅适用于 Python 3.8+
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件