#34210: python 輸入怎麼寫


daniel875487@gmail.com (秉.)

學校 : 不指定學校
編號 : 192505
來源 : [210.240.156.155]
最後登入時間 :
2023-05-18 19:21:42
c045. 00490 - Rotating Sentences -- UVa490 | From: [210.240.156.155] | 發表日期 : 2023-03-06 02:44

如題

 
#43765: Re: python 輸入怎麼寫


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

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-11-21 19:18:13
c045. 00490 - Rotating Sentences -- UVa490 | From: [123.192.228.253] | 發表日期 : 2024-10-29 12:22

這題需要一口氣讀入所有資料,下面是我知道的作法

data = []
while True:
try:
data.append(input())
except EOFError:
break

# 後面看你想幹嘛,記得寫在 while 外面
# 想寫在 except 裡面也可以,但我覺得可讀性會差一些,當然,break 依舊不能省

和下面這個,用 sys.stdin 就會自動讀取到 EOF 為止了,可以理解成效率更高的 input(),但功能比較少,不過大同小異

import sys
data = [line.rstrip() for line in sys.stdin]

# 要 rstrip() 是因為這種輸入方式不會忽略換行符 \r\n,我們需要主動去除他們

如果你不介意換行符,你打算之後處理,也可以這樣,讀取效率會更好一些

import sys
data = sys.stdin.readlines()

# readlines() 會一口氣把所有資料都讀進來,然後根據換行符 \n 的位置,把資料轉換成 list[str] 的格式
# 類似 str.split('\n'),但是會保留 \n

 

 
ZeroJudge Forum