如何才能在同一行上同时打印多个内容(固定文本和/或变量值)?

2024-12-09 08:31:00
admin
原创
101
摘要:问题描述:我有一些如下代码:score = 100 name = 'Alice' print('Total score for %s is %s', name, score) 我希望它打印出来Total score for Alice is 100,但我得到的却是Total score for %s is %...

问题描述:

我有一些如下代码:

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 修复当前代码,您需要传入一个元组:

  1. 将其作为元组传递:

print("Total score for %s is %s" % (name, score))

具有单个元素的元组看起来像('this',)

以下是其他一些常见的方法:

  1. 将其作为字典传递:

print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})

还有新样式的字符串格式,可能更容易阅读:

  1. 使用新式字符串格式:

print("Total score for {} is {}".format(name, score))
  1. 使用带有数字的新式字符串格式(对于重新排序或多次打印相同的数字很有用):

print("Total score for {0} is {1}".format(name, score))
  1. 使用具有明确名称的新式字符串格式:

print("Total score for {n} is {s}".format(n=name, s=score))
  1. 连接字符串:

print("Total score for " + str(name) + " is " + str(score))

我认为最明显的有两点:

  1. 只需将值作为参数传递:

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
  1. 使用 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 issueCasting syntax当您尝试组合两个不同的 时,就会发生这种情况types of variables。由于我们无法将 a 转换stringintegerfloat,因此我们必须将我们的 转换integersstring。您可以这样做: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+

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   990  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   26  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   27  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   26  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   53  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用