2015-09-03 67 views
3

我只是在學習python並嘗試一個非常簡單的字符串格式化行,但它不能正常工作。正如你從下面的輸出中可以看到的,它將數字插入到3的最後一個,但前兩個只是顯示代碼而不是數字。我確信解決方案很簡單,但我試圖看看我的代碼與我學習資料中的代碼,我看不出有什麼區別。在Visual Studio 2015中使用Python 3.4。非常基本的字符串格式不工作(Python)

非常感謝您提供任何可用的幫助! :)

CODE(區爲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

添加這裏是格式方法纔會被調用爲最後的字符串中的3串的問題TOG醚。您應該應用格式化操作AFTER您已經連接了字符串,或者使用接受換行符的單個字符串格式(因此您不必首先連接字符串)。

要連接後應用,您可以在字符串連接周圍使用一組額外的括號,例如:

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

其中\允許在不會被打印的代碼換行符。

+0

謝謝你的幫助。您的回覆非常清晰,易於理解。 – endious

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)) 
1

你有一個優先發布。你實際上在做什麼是concatinating三個字符串 - "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}。要解決這可能是圍繞你打算有括號(())字符串concatination

的一種方式,所以它首先評價:

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

但更清潔的方法是完全放棄串concatination而只使用一個多行字符串(注意缺乏+運營商):

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)) 
+0

哇,謝謝大家的快速和容易理解的反應。我認爲這種格式適用於同一個圓括號內的所有{}字段,但是,現在的答案是有意義的,因爲我重新查看了我所寫的內容,因爲串聯將括號內的字符串分開,我認爲所有字符串在一個括號內包括在一起。 – endious