從本例學到什麼
- 如何做到“不換行輸出”?舉例來說,如何做到把三個整數輸出到同一行?
- 如何按每行三個(或5個,或n個)元素的格式輸出?
實例程序
題目描述
本題要求編寫程序,對順序讀入的n個整數,順次計算後項減前項之差,並按每行三個元素的格式輸出結果。
輸入格式:
輸入的第一行給出正整數n(1<n≤10)。隨後一行給出n個整數,其間以空格分隔。
輸出格式:
順次計算後項減前項之差,並按每行三個元素的格式輸出結果。數字間空一格,行末不得有多餘空格。
輸入樣例:
10
5 1 7 14 6 36 4 28 50 100
輸出樣例:
-4 6 7
-8 30 -32
24 22 50
題目的解答
n = int(input())
#輸入一組整數,存入ns列表
ns = []
n_strs = input().split()
for s in n_strs:
ns.append(int(s))
#求出差值列表
ds = []
for i in range(n-1):
ds.append(ns[i+1] - ns[i])
for i in range(1, n):
#輸出第i個數之際,有兩種情形表明到達一行末尾:i是3的倍數或者i是最後一個元素的索引。
if i % 3 == 0 or i == n-1:
print(ds[i-1]) #每一行的末尾,換行輸出
else:
print(ds[i-1], end=' ') #不是一行末尾的時候,輸出不換行,輸出內容後跟一個空格
知識點
- 輸出不換行的做法。
以下語句使得輸出不換行:
print(ds[i-1], end= ' ')
導致不換行的是end=’ ',這是一個關鍵字參數。它的意思是向print函數的end參數傳遞空格字符串。這樣,print函數執行後,輸出內容之後跟一個空格,且不換行。
對比而言,print(ds[i-1])產生的輸出會換行,你也可以理解爲輸出內容之後跟一個換行符——這是默認的做法。
- 如果要在輸出內容之後不跟空格,而是跟逗號,輸出語句是: print(ds[i-1], end = ‘,’) 。這樣不會換行。
- 要在輸出內容之後不跟任何內容,輸出語句是:print(ds[i-1], end = ‘’) 。這一句語句中,傳給end參數的值是空字符,不是空格字符。空字符與空格字符串是不同的。這一語句產生的輸出不會換行。
- “按每行k個元素的格式”輸出m個數的做法是:
(1)依次輸出第i個數,i=1, 2, …, m。
(2)如果i是k的倍數,那麼輸出該數後跟換行符。如果i等於m,則其後也跟換行符。否則,輸出該數後跟空格字符。
小結
- print(x, end=’ ')中,關鍵字參數end = ’ '使得輸出內容之後跟一個空格,不換行。
- 上一節講解了“按每行k個元素的格式”輸出m個數的做法。