这只是我的代码片段:
print("Total score for %s is %s ", name, score)
但我希望它打印出来:
“(姓名)总分为(分数)”
其中name
是列表中的变量,score
是整数。如果这有用的话,那就是Python 3.3。
答案 0 :(得分:466)
有很多方法可以做到这一点。要使用%
格式化来修复当前代码,您需要传入一个元组:
将其作为元组传递:
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}')
答案 1 :(得分:48)
有很多方法可以打印。
让我们看看另一个例子。
{{1}}
答案 2 :(得分:20)
使用:.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))`
答案 3 :(得分:19)
在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}.')
会做的。
它更高效,更优雅。
答案 4 :(得分:14)
保持简单,我个人喜欢字符串连接:
print("Total score for " + name + " is " + score)
它适用于Python 2.7和3.X。
注意:如果得分是 int ,则应将其转换为 str :
print("Total score for " + name + " is " + str(score))
答案 5 :(得分:12)
试试吧:
print("Total score for", name, "is", score)
答案 6 :(得分:9)
请按照
进行操作idiot_type = "the biggest idiot"
year = 22
print("I have been {} for {} years ".format(idiot_type, years))
或强>
idiot_type = "the biggest idiot"
year = 22
print("I have been %s for %s years."% (idiot_type, year))
忘记所有其他人,否则大脑就无法映射所有格式。
答案 7 :(得分:5)
print("Total score for %s is %s " % (name, score))
%s
可以由%d
或%f
答案 8 :(得分:5)
If score
is a number, then
print("Total score for %s is %d" % (name, score))
If score is a string, then
print("Total score for %s is %s" % (name, score))
If score is a number, then it's %d
, if it's a string, then it's %s
, if score is a float, then it's %f
答案 9 :(得分:3)
使用f-string
:
print(f'Total score for {name} is {score}')
或
使用.format
:
print("Total score for {} is {}".format(name, score))
答案 10 :(得分:0)
这可能是一个 casting issue
。 Casting syntax
当您尝试组合两个不同的 types of variables
时发生。由于我们无法始终将 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>