#41698: python 一行解,你對print()認識有多少?


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-11-09 20:16:56
e456. Ten little Indians -- 板橋高中Python教學題 | From: [123.192.228.253] | 發表日期 : 2024-08-18 16:28

其實是想順便寫起來加深印象
根據題目要求,不管輸入什麼,每個值都是接little,最後一個用little Indians收尾
一個比較直覺的作法是做成list後,for循環它,最後一個再補little Indians

但其實也可以利用print本身的特性去做(w3schools: print)

print()其實就是一個函數,我們傳入一個值,它會幫我們把對應的值輸出出來,函數有的特性它都有

那如果要傳入很多個值呢?例如將一個可迭代對象解包後輸出print(*my_list)
如果你有做過,應該會看到它是用這種形式輸出的:

data = [1, 2, 3, 4, 5]
print(*data)
# 輸出: 1 2 3 4 5

依序取出一個值,每個值的中間用空格隔開

我們其實可以修改這個空格,改用其他形式輸出
做法是修改sep的值(如果你不知道這步在幹嘛,看(這個裡面提到的關鍵字引數參數預設值)

data = [1, 2, 3, 4, 5]
print(*data, sep='好熱')

# 輸出: 1好熱2好熱3好熱4好熱5

sep預設值其實是一個空格,但我傳進去自己要的東西後,就不再使用空格,而是我要的東西了

 

應該很容易就能發現,每執行一次print(),就會自動換行輸出
這是因為print預設會在結束前輸出一個換行符\n

data1 = [1, 2, 3]
data2 = [4, 5, 6]
print(*data1)
print(*data2)

# 輸出:
# 1 2 3
# 4 5 6

如果我想讓他們都在同一行怎麼辦?
一個做法是寫在一起 print(*data1,*data2)

另一個做法是修改end的值,把預設的換行符\n改掉

data1 = [1, 2, 3]
data2 = [4, 5, 6]
print(*data1, end='挖靠有蛇!')
print(*data2)
 
# 輸出:
# 1 2 3挖靠有蛇!4 5 6

可以看到沒有自動換行了,因為我已經把預設的\n改成別的東西了

 

回到題目,透過split()很簡單就立刻弄出一個串列,接下來只需要直接把這個串列丟到print()裡面解包就可以了

print(*input().split(), sep=' little, ', end=' little Indians')

 

 

 
ZeroJudge Forum