在Python中打印多个参数

时间:2013-03-08 03:51:49

标签: python printing python-3.x arguments

这只是我的代码片段:

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

但我希望它打印出来:

  

“(姓名)总分为(分数)”

其中name是列表中的变量,score是整数。如果这有用的话,那就是Python 3.3。

11 个答案:

答案 0 :(得分:466)

有很多方法可以做到这一点。要使用%格式化来修复当前代码,您需要传入一个元组:

  1. 将其作为元组传递:

    print("Total score for %s is %s" % (name, score))
    
  2. 具有单个元素的元组看起来像('this',)

    以下是其他一些常用方法:

    1. 将其作为字典传递:

      print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})
      
    2. 还有新式的字符串格式,可能更容易阅读:

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

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

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

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

        print("Total score for " + str(name) + " is " + str(score))
        
      5. 在我看来最清楚的两个:

        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
          
        2. 在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 issueCasting syntax 当您尝试组合两个不同的 types of variables 时发生。由于我们无法始终将 string 转换为 integerfloat,因此我们必须将 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>