我只是在学习python并尝试一个非常简单的字符串格式化行,但它无法正常工作。从下面的输出中可以看出,它是在3的最后一个中插入数字,但前2个只显示代码而不是数字。我确信解决方案很简单,但我已经尝试查看我的代码与我所拥有的学习资料中的代码,我看不出任何区别。在Visual Studio 2015中使用Python 3.4。
提前感谢您提供任何可用的帮助! :)
代码(面积为200)
print("The area of the square would be {0:f} " .format(area))
#This is an example with multiple numbers and use of "\" outside of a string to allow for
#multiple lines of code in the same line spread out over numerous lines
print("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}" .format(7,8,9))
输出
广场的面积为200.000000
以下是其他三个数字。第一个数字是{0:d},第二个数字是{1:d}, 第三个数字是9。
线程'MainThread'(0xc10)已退出,代码为0(0x0)。
程序'[4968] python.exe'已退出,代码为-1073741510(0xc000013a)。
答案 0 :(得分:3)
这里的问题是只能为3个字符串中的最终字符串调用格式方法。您应该应用已连接字符串的格式操作 AFTER ,或使用接受换行符的单字符串格式(因此您不必首先连接字符串)。 / p>
要在连接后应用,您可以在字符串连接周围使用一组额外的括号,例如
print(("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}") .format(7,8,9))
或者您可以使用三引号来接受换行符,例如
print("""Here are three other numbers.\
First number is {0:d}, second number is {1:d},
third number is {2:d}""" .format(7,8,9))
其中\
允许在不打印的代码中换行。
答案 1 :(得分:1)
您有优先权问题。你实际上在做的是结合三个字符串 - "Here are three other numbers."
," First number is {0:d}, second number is {1:d}, \n"
和"third number is {2:d}" .format(7,8,9)
的结果。 format
调用仅适用于第三个字符串,因此仅替换{2:d}
。
解决这个问题的一种方法可能是用括号(()
)包围你打算使用的字符串连接,然后首先评估它:
print(("Here are three other numbers." + \
" First number is {0:d}, second number is {1:d}, \n" + \
"third number is {2:d}") .format(7,8,9))
但更简洁的方法是完全删除字符串连接并使用多行字符串(注意缺少+
运算符):
print("Here are three other numbers." \
" First number is {0:d}, second number is {1:d}, \n" \
"third number is {2:d}" .format(7,8,9))
答案 2 :(得分:0)
你的字符串被分成两个(实际上是三个)部分,但第一个字符串并不真正相关,所以我们把它留下来。但是,格式化仅应用于最后一个字符串,在本例中为"third number is {2:d}"
,因此字符串"First number is {0:d}, second number is {1:d}, \n"
中的格式字符串将被忽略。
对我有用的是以下代码:
print("Here are three other numbers." + " First number is {0:d}, second number is {1:d}, \n third number is {2:d}".format(7,8,9))