Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么会出现python连接错误?_Python_String Concatenation - Fatal编程技术网

为什么会出现python连接错误?

为什么会出现python连接错误?,python,string-concatenation,Python,String Concatenation,我正在做这个教程,我遇到了这个奇怪的错误。我正在打印日期 因此,在编写示例代码之前,您需要: from datetime import datetime now = datetime.now() 这会打印出来 print "%s" "/" "%s" "/" "%s" % (now.month, now.day, now.year) 这也会如此 print "pizza" + "pie" print "%s/%s/%s" % (now.month, now.day, now.year) 这

我正在做这个教程,我遇到了这个奇怪的错误。我正在打印日期

因此,在编写示例代码之前,您需要:

from datetime import datetime
now = datetime.now()
这会打印出来

print "%s" "/" "%s" "/" "%s" % (now.month, now.day, now.year)
这也会如此

print "pizza" + "pie"
print "%s/%s/%s" % (now.month, now.day, now.year)
这也会如此

print "pizza" + "pie"
print "%s/%s/%s" % (now.month, now.day, now.year)
但当我介绍串联运算符时:

#Traceback (most recent call last):
#  File "python", line 4, in <module>
#TypeError: not all arguments converted during string formatting
print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
#回溯(最近一次呼叫最后一次):
#文件“python”,第4行,在
#TypeError:在字符串格式化过程中并非所有参数都已转换
打印“%s”+“/”+“%s”+“/”+“%s”%(now.month,now.day,now.year)
这是某种连接问题。我不明白的是,当我连接其他字符串时,以及当我不使用所需字符串的连接时,代码将打印出来。

因为:

print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
与此相同,原因是(注意额外的括号)

因为:

print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
与此相同,原因是(注意额外的括号)


您遇到的问题是由运算符优先级引起的

下一行之所以有效,是因为它的优先级高于
%
运算符

print "%s" "/" "%s" "/" "%s" % (now.month, now.day, now.year)
print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
以下操作不起作用,因为
+
运算符的优先级低于
%
运算符

print "%s" "/" "%s" "/" "%s" % (now.month, now.day, now.year)
print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
要修复此问题,请在连接中添加括号,以便首先执行连接,如下所示:

print ("%s" + "/" + "%s" + "/" + "%s") % (now.month, now.day, now.year)

您遇到的问题是由运算符优先级引起的

下一行之所以有效,是因为它的优先级高于
%
运算符

print "%s" "/" "%s" "/" "%s" % (now.month, now.day, now.year)
print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
以下操作不起作用,因为
+
运算符的优先级低于
%
运算符

print "%s" "/" "%s" "/" "%s" % (now.month, now.day, now.year)
print "%s" + "/" + "%s" + "/" + "%s" % (now.month, now.day, now.year)
要修复此问题,请在连接中添加括号,以便首先执行连接,如下所示:

print ("%s" + "/" + "%s" + "/" + "%s") % (now.month, now.day, now.year)

因为它试图将您的所有值格式化为最后的
“%s”
。您需要将字符串构建包装在parens中。这是一个简单的运算符优先级问题,因为它试图将您的所有值格式化为最后的
“%s”
。你需要用parens来包装字符串构建。这是一个简单的运算符优先的问题,我没有遵循。是不是正是加分把它扔掉了,加法有更高的优先级?这不也应该取消打印“%s”“/”“%s”“/”“%s”“%(now.month、now.day、now.year),因为假定它们是串联的吗?你能再解释一点吗?仔细想想,我现在明白了。空格实际上并没有将这些字符串连接在一起,它只是将这些字符串相邻地打印出来。加法符号和百分号一样,起着运算符的作用,混淆了所有的顺序。我不明白。是不是正是加分把它扔掉了,加法有更高的优先级?这不也应该取消打印“%s”“/”“%s”“/”“%s”“%(now.month、now.day、now.year),因为假定它们是串联的吗?你能再解释一点吗?仔细想想,我现在明白了。空格实际上并没有将这些字符串连接在一起,它只是将这些字符串相邻地打印出来。加法符号和百分号一样,起着运算符的作用,混淆了所有符号的顺序。我之所以选择这个符号,是因为解释更加透彻,尽管第一个答案帮助我理解了它,尽管我自己花了一段时间看它。当我有加1的能力时,我会加1第一个答案。我选择这个答案是因为解释更彻底,虽然第一个答案帮助我得到了它,尽管我自己花了一段时间看它。当我有+1次幂时,我将+1作为第一个答案。