非常基本的字符串格式不起作用(Python)

时间:2015-09-03 13:01:45

标签: python python-3.x string-formatting

我只是在学习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)。

3 个答案:

答案 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))