这是非常基本的:
byGroup(Seq(1,2,3)) *_steps
它工作正常并打印出预期的结果,但如果我将最后一行替换为:
my_name="nishant"
my_age=24
print "My name is %s"%my_name
print "My age is %d & my name is %s, what are you ?" %(my_age, my_name)
我收到此错误:
print "My age is %d & my name is %s, what are you ?" %my_age , %my_name
我的问题是:
File "my_tests.py", line 7
print "My age is %d & my name is %s, what are you ?" %my_age, %my_name
^
SyntaxError: invalid syntax
!= %(my_age, my_name)
?答案 0 :(得分:3)
您的代码段执行的内容是binary arithmetic operation,并且它需要单个对象作为第二个参数。
使用括号,您将此参数定义为两元素元组。我添加了额外的括号来强调如何解释代码。
View view = new View(OneDayTimeTable.this);
TextView tv = (TextView)view.findViewWithTag("mon_11.30");
如果没有,参数是单个元素,print ("My age is %d & my name is %s, what are you ?" % (my_age, my_name))
被解释为print
statement的第二个参数。
print依次计算每个表达式并写入结果 反对标准输出
, %my_name
由于print ("My age is %d & my name is %s, what are you ?" % my_age), (%my_name)
是无效的Python表达式,因此会引发%my_name
。
答案 1 :(得分:1)
%
是一个运营商,就像+
,-
,/
,*
,&
,|
等就像你不能做4 * 5, * 6
一样,你不能做'%s %s' % 'here', % 'there'
。实际上,x % y
只是x.__mod__(y)
1 的捷径。因此,
'%s %s' % ('here', 'there') -> '%s %s'.__mod__(('here', 'there'))
两次使用%
没有意义:
'%s %s'.__mod__('here'), .__mod__('there')
1 或y.__rmod__(x)
如果x.__mod__()
不存在。
答案 2 :(得分:0)
>>> print "My name is %s & my age is %d, what are you?" % (my_name, my_age)
My name is nishant & my age is 24, what are you?
在%符号后面传递一个你需要的变量元组。
对不起,我在之前的回答中误解了你的问题。
答案 3 :(得分:0)
因为格式化程序需要一个元组。
答案 4 :(得分:0)
这是字符串的python语法,您可以阅读python文档,了解具有两个以上变量的转换说明符的工作原理:
https://docs.python.org/2/library/stdtypes.html#string-formatting-operations
这只是一个设计解决方案,开发人员认为是最好的。当有多个变量时,Python需要一个元组。
答案 5 :(得分:0)
%
运算符只应出现一次 - 它不是变量名的一部分。这就是你通常会看到它的用法:
print "My age is %d & my name is %s, what are you ?" % (my_age, my_name)
%
和元组之间的空间只是为了强调它们的独特性。