Python使用%来替换变量

时间:2012-03-05 22:10:01

标签: python syntax

def donuts(count):
  strout = 'Number of donuts %s'
  if count >= 10:
    %s('many')
  else:
    %s(str(count))
  return strout

我得到了SyntaxError: invalid syntax.

当然可以做到

def donuts(count):
  if count < 10:
    return 'Number of donuts: ' + str(count)
  else:
    return 'Number of donuts: many'

但只是想要了,这怎么会有效? 谢谢!

6 个答案:

答案 0 :(得分:4)

对于python 2.6+或3.0+使用http://docs.python.org/library/stdtypes.html#str.format

mystr = "Number of donuts: {}"
...
mystr = mystr.format(count)

答案 1 :(得分:2)

def donuts(count):
  format_str = 'Number of donuts %s'
  if count >= 10:
    return format_str % 'many'
  else:
    return format_str % count

P.S。不要命名变量str - 已经有一个名为str的内置Python函数;通过命名一个可能导致疯狂的变量来遮蔽它。

答案 2 :(得分:2)

howbout:

def donuts(count):
  somedonuts = 'Number of donuts %s'
  if count >= 10:
    somedonuts %= 'many'
  else:
    somedonuts %= str(count)
  return somedonuts
  1. 不要将str用于变量,这已经是一个内置名称(您在自己的代码中进行了整理!)在python提示符下检查dir(__builtins__)以获取完整列表。
  2. 使用%=格式化字符串并用格式化结果替换变量。

答案 3 :(得分:2)

def donuts(count):
    if count >= 10:
      resp = 'many'
    else:
      resp = count
    strout = 'Number of donuts %s' %resp
    return strout

答案 4 :(得分:1)

字符串插值是字符串和元组的模数(尽管如果它不是元组,则可以使用单个值)。

mystr % ('many',)
mystr % (count,)

答案 5 :(得分:0)

%是二元运算符。左操作数应该是一个字符串,右操作数应该是一个元组,其元素数量与字符串中的格式说明符相同(如果只有一个格式说明符,标量值将起作用)。在您的情况下,您可以像这样使用它:

def donuts(count):
    return 'Number of donuts %s' % ('many' if count >= 10 else count)

查看documentation以获取更多信息。