2014-06-23 42 views
0

你能解释一下这个python代码的含义吗?百分号的含义(%)

 for v in m.getVars(): 
      print('%s %g' % (v.varName, v.x)) 

的打印输出是

 x 3 
    y 5 

的 '3' 和 '5' 是 '(v.varName,VX)' 的价值观,我不明白是怎么知道打印'x'和'y'以及除了找到余数之外还有其他用于'%'的其他用途。

+0

它是格式字符串。 '%s'是字符串和'%g'的占位符,可能是一个整数。 (我不确定)。最后一个'%'后面的参数将被放置,而不是占位符。 – Mehraban

+1

从文档中,@SAM是正确的https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting – CDspace

+0

它是一个重载二元运算符,应用于字符串时称为[字符串插值](https://docs.python.org/2/reference/expressions.html?highlight=interpolation#binary-arithmetic-operations)。 – martineau

回答

0

这是一种在包含多个变量时简化字符串的方法。如您所见,在python中,您在打印语句中创建了一个反映变量v.varName和v.x的字符串。在字符串中使用百分号时,它将按照您提供的参数的顺序进行匹配。

每种类型的变量都有特定的字母。在你的情况下,你用“s”和“g”代表一个字符串和一个数字。当然,如果你正在创建一个字符串,数字就会变成字符串(就像这种情况一样)。

例子:

x = 20 
y = "hello" 
z = "some guy" 

resulting_string = "%s, my name is %s. I am %g years old" % (y, z, x) 

print resulting_string 

结果将是:

hello, my name is some guy. I am 20 years old 

注意,在变量部分的顺序是什么给了正确的顺序。

1

命令

for v in m.getVars(): 

分配所有瓦尔对象的模型米到变量v名单。

然后,您可以在查询列表中的各个变量的各种属性。

例如,为了获得在表V的第一个变量的变量名和解决方案的价值,你会发出以下命令

print v.varName, v.x 

可以键入help(五)获得的所有方法的列表一个VAR对象

正如其他人提及%仅仅是占位 要理解你的代码是如何工作的,检查模型M

+1

我认为这回答了实际问题,而不仅仅是问题的标题。 –