2012-03-05 83 views
-1
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' 

却只想给UE%,如何将这项工作? 谢谢!

+0

有人可以告诉我为什么这个问题下来投了吗?高度赞赏〜 – sammiwei 2012-03-05 22:19:52

+0

这个问题并没有显示任何研究工作,, https://www.google.com/search?q=python+percent – Aprillion 2012-03-06 09:32:02

回答

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. 使用%=格式化字符串并用格式化结果替换变量。
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函数;通过命名可能导致疯狂的变量来隐藏它。

1

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

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

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

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

检查documentation以获取更多信息。

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