Khiêu chuyển đáo nội dung

BOO đại toàn / thâu nhập dữ thâu xuất

Duy cơ giáo khoa thư, tự do đích giáo học độc bổn
( trọng định hướng tựBOO/InputAndOutput)

Thượng nhất chương: Hình biệt chuyển hoánMục lụcHạ nhất chương: Hàm thức


Thâu nhập dữ thâu xuất

[Biên tập]

Độc thủ chung đoan cơ văn tự

[Biên tập]

Boo dĩ kinh nội kiến liễu dụng lai xử lý thâu nhập đích hàm sổ, danh tự thịprompt.Tha hội đề kỳ sử dụng giả tịnh đẳng đãi thâu nhập, chỉ thích dụng ô chung đoan cơ ứng dụng trình thức:

>>> prompt('enter some text:')
enter some text:here we go again
'here we go again'

Dã khả dĩ cải sử dụng.NET nội kiến đích Console:

>>> import System
>>> Console.In.ReadLine()
here we go again
'here we go again'

Ngã môn dã khả dĩ độc thủ thâu nhập, tác xử lý chi hậu, tái tiến hành thâu xuất. Hạ diện tựu thị nhất cá dụng lai tương thâu nhập đích tự xuyến chuyển hoán vi đại tả đích đại mã:

# uppercase.boo
text=System.Console.In.ReadToEnd()
printtext.ToUpper()

Tại biên dịch chi hậu, tựu khả dĩ tượng kỳ tha chỉ lệnh nhất dạng sử dụng. Sử dụng phương pháp hữu lưỡng chủng, đệ nhất chủng phương pháp, nhĩ khả dĩ tương thâu nhập đương án chỉ định vi trình thức đích tiêu chuẩn thâu nhập, nhiên hậu tương trình thức đích tiêu chuẩn thâu xuất đạo hướng đáo nhất cá thâu xuất đương án. Đệ nhị chủng phương pháp, khả dĩ sử dụng pipe ( tựu thị | ), tương sort đích thâu xuất đạo hướng đáo uppercase, tái thâu xuất đáo myfile-upper-sorted.txt.

uppercase < myfile.txt > myfile-upper.txt
sort myfile.txt | uppercase > myfile-upper-sorted.txt

Đương nhiên dã khả dĩ nhất thứ độc thủ nhất hành, hạ diện trình thức tựu thị tại độc thủ mỗi hành chi hậu, tái gia thượng hành hào tịnh thâu xuất:

importSystem
k=0
while(line=Console.In.ReadLine())!=null:
print++k,line

Ngã giác đắc giá trình thức hữu điểm bổn chuyết, cảm giác thượng tựu thị trực tiếp dĩ Boo cải tả C# trình thức. Sở dĩ hạ diện cải dụng for hồi quyển thủ đại phục tạp đích while hồi quyển, lai điệt đại văn tự lưu lí đích mỗi nhất hành, giá thị nhất cá ngận bổng đích đặc tính, bất thị mạ? ( chú ý, Boo đích biến sổ chỉ phái thị nhất cá vận toán thức, nhi phi thuật cú, hội hữu trị truyện xuất. Dịch chú, C/C++/C# dã ngận thường khán đáo đồng dạng đích dụng pháp. )

importSystem
k=0
forlineinConsole.In:
print++k,line

Giá thị chỉ hữu lưỡng hành đích bản bổn:

fork,lineinenumerate(System.Console.In):
printk,line

Nội kiến đíchenumerateHàm thức tựu thị vi liễu giá chủng tình huống sản sinh đích, tha bị thiết kế lai điệt đại tập hợp tịnh bảo hữu tác dẫn trị.

Tối hậu tái giới thiệu nhất cá bả văn tự đương lí đích mỗi hành phóng đáo trận liệt lí đích phương pháp, chỉ hữu nhất hành:

lines=array(string,lineforlineinSystem.Console.In)

Tầm trảo đương án

[Biên tập]

.NET tại xử lý đương án dữ mục lục thượng, đề cung liễu phong phú đích hàm thức. Giá ta hàm thức đô tạiSystem.IOMệnh danh không gian lí. Cử lệ lai thuyết,Directory.GetFilesHồi truyện nhất cá bao hàm mỗ mục lục hạ sở hữu đương án đích trận liệt. Giá lí, "." Thông thường dụng lai biểu kỳ đương tiền đích mục lục, giá nhi tịnh sử dụngGetFullPathThủ đắc hoàn chỉnh lộ kính.

>>> import System.IO
>>> files = Directory.GetFiles( ".", "*.boo" )
>>> files
('.\\ast.boo', '.\\AttemptMacro.boo', '.\\PlotMacro.boo',
'.\\SampleMacro.boo', '.\\TestAttemptMacro.boo', '.\\TestPlotMacro.boo',
'.\\TestSampleMacro.boo')
>>> Path.GetFullPath(files[0])
'C:\\net\\sciboo\\examples\\macros\\ast.boo'

Độc thủ đương án

[Biên tập]

Thường thường ngã môn hội tưởng yếu tồn thủ nhậm ý đích đương án ﹔ độc thủ đích phương pháp đô nhất dạng. Dữ tiền diện dụng quá đíchSystem.Console.InĐích bất đồng điểm, tại ô thâu nhập văn tự lưu tất tu yếu tiên đả khai, sử dụng hoàn tắc tất tu quan bế.

>>> import System.IO
>>> fin = File.OpenText( "tmp.txt" )
System.IO.StreamReader
>>> fin.ReadLine()
'Here are '
>>> fin.ReadLine()
'a few lines'
>>> fin.Close()

Giá biên bả tiền diện gia thượng hành hào đích lệ tử tái cải tả, nhượng tha khả dĩ y cư trình thức tham sổ lai độc thủ chỉ định đương án, tịnh thả gia thượng nhất ta cơ bổn đích tất yếu kiểm tra:

importSystem.IO
iflen(argv)==0:
print"usage: <text file>"
return
ifnotFile.Exists(argv[0]):
print"file does not exist:",argv[0]
return
fin=File.OpenText(argv[0])
k=0
forlineinfin:
print++k,line
fin.Close()

( ngã tri đạo tại nhất cá trình thức lí sử dụngreturnLai ly khai hiển đắc ngận kỳ quái, đãn biệt vong liễu, kỳ thật giá lí diện hữu cá ẩn tính đích main hàm thức. )

Ngã kiến nghị nhĩ cải dụngusingThuật cú. Bất chỉ thị nhân vi tha khán khởi lai bỉ giác giản khiết ( bả độc thủ đích động tác phóng đáo trình thức khu khối lí, khán lai ngận thanh sở ), nhi thị nhân vi bất quản phát sinh thập ma sự, tha bảo chứng nhĩ đích đương án nhất định hội quan bế. Sở dĩ tối hậu ngũ hành khả dĩ tái cải tả vi:

usingfin=File.OpenText(argv[0]):
k=0
forlineinfin:
print++k,line

Độc thủ sổ trị

[Biên tập]

Đương ngã khai thủy học C# thời, ngã ngận kinh nhạ, C# cư nhiên một hữu nhất cá giản đan đích phương pháp dụng dĩ độc thủ sổ trị. ( dã hứa đối nhất cá tân ngữ ngôn lai thuyết, giá thái quá thời liễu, hiển nhiên, Java dã hữu thử vấn đề. ) nhĩ tất tu yếu phân khai thâu nhập, tịnh tương tự xuyến chuyển vi sổ trị. Giá lí hữu cá trình thức, tha tòng đương án lí độc thủ sở hữu sổ trị, tịnh kế toán kỳ bình quân trị:

importSystem
importSystem.IO

sum=0.0
k=0
forlineinConsole.In:
words=line.Split(char(' '),char('\t'))
forwinwords:
iflen(w)>0:
try:
x=double.Parse(w)
sum+=x
++k
except:
printw,"was not a number"
return
print"numbers"+k+"average was"+sum/k

Giá bất thị cá phiêu lượng đích trình thức, tự xuyến đích xử lý dữ luy gia bị bảng tại nhất khởi liễu.

Giá lí sử dụng Generator phương pháp ( sử dụngyield), tương tự xuyến xử lý dữ luy gia đích la tập phân khai,

importSystem
importSystem.IO

defNumbers():
forlineinConsole.In:
words=line.Split(char(' '),char('\t'))
forwinwords:
iflen(w)>0:
yielddouble.Parse(w)


sum=0.0
k=0
try:
forxinNumbers():
sum+=x
++k
excepteasException:
printe.Message
return
print"numbers"+k+"average was"+sum/k

Như quả ngã môn tạidouble.ParseThất bại thời, giả thiết kết quả vi 0 đích thoại, khả dĩ nhượng trình thức canh giản đan ta. Tiền diện ngã môn tại Parse phát sinh thác ngộ thời đề xuất lệ ngoại, tuy nhiên giá khán lai ngận ngu xuẩn, bất quá giá khước thị mỗ ta script ngữ ngôn, như AWK, sở tác đích sự tình. Giá biên ngã môn tái gia thượng SafeParse lai chuyên chú ô giải tích sổ trị đích nhậm vụ. ( đương nhiên ngã môn khả dĩ giả thiết đương án đích cách thức đô thị chính xác đích, bất tố xử lý, đãn nan bảo bất hội ngộ đáo bất chính thường đích trạng huống, nhĩ thuyết thị mạ? )

defSafeParse(wasstring):
try:
returndouble.Parse(w)
except:
return0.0

defNumbers():
forlineinConsole.In:
words=line.Split(char(' '),char('\t'))
forwinwords:
iflen(w)>0:
yieldSafeParse(w)

Chủ yếu đích hồi quyển hiện tại khán lai canh giản đan liễu.

sum=0.0
k=0
forxinNumbers():
sum+=x
++k
print"numbers"+k+"average was"+sum/k

Hạ nhất tiết hội đề đáo tương tự xuyến dữ sổ trị phân khai đích phương pháp, thỉnh tham khảoĐộc thủ tự xuyến.

( như quả tưởng tái bả chủ yếu hồi quyển tác thành hàm thức đích thoại, khả dĩ tham khảoKỳ tha đích tác pháp).

Độc thủ tự xuyến

[Biên tập]

TextReaderLoại biệt tịnh bất cụ hữu độc thủ hữu phân cách phù hào văn tự đích năng lực, tha chỉ năng độc thủ hành. Nhĩ khả dĩ trục tự nguyên độc thủ, nhiên hậu tự hành thu tập.ReadHồi truyện nhất cá chỉnh sổ, khả dĩ chuyển vi tự nguyên. Tại ngộ đáo đương án kết vĩ thời, tắc truyện hồi -1(-1 bất thị cá hợp pháp đích tự nguyên ). Sở dĩ ngã môn khả dĩ nhất thứ độc thủ nhất cá tự nguyên, tịnh tương kỳ phụ gia đáoStringBuilderVật kiện lí, trực đáo phát hiện phi không bạch tự nguyên hoặc thị ngộ đáo -1 thời, tái bả kết quả truyện hồi. Sử dụngStringBuilderLai tổ tự xuyến đích nguyên nhân thị nhân vi tha bỉ giác hữu hiệu suất.

importSystem.Text
importSystem.IO

defReadString(trasTextReader):
ch=tr.Read()
whilech!=-1andchar.IsWhiteSpace(cast(char,ch)):
ch=tr.Read()
# kết thúc liễu, truyện hồi null
ifch==-1:
returnnull
# ngộ đáo phi không bạch tự nguyên!
sb=StringBuilder()
whilech!=-1andnotchar.IsWhiteSpace(cast(char,ch)):
sb.Append(cast(char,ch))
ch=tr.Read()
returnsb.ToString()

s="""
1 2.3 hello
2 5.6 dolly
"""

sr=StringReader(s)
s=ReadString(sr)
whiles:
prints
s=ReadString(sr)
print"that's all, folks!"

Như quả yếu xử lý chỉnh sổ hoặc phù điểm sổ đích thoại, khả dĩ giá dạng dụng:

defReadInt(trasTextReader):
returnint.Parse(ReadString(tr))

defReadDouble(trasTextReader):
returndouble.Parse(ReadString(tr))

Kỳ tha đích tác pháp

[Biên tập]

Giá nhi hữu cá phương pháp khả dĩ dụng lai kế toán tự liệt đích gia tổng, tịnh hồi truyện nguyên tố tổng sổ dữ gia tổng trị. Giá nhi tuyên cáo liễuduckHình biệt đích tự liệt, nhiên hậu điệt đại giá cá tự liệt tịnh gia tổng, sở dĩ giá cá hàm thức khả dĩ xử lý nhậm hà tự liệt, tự liệt lí đích sở hữu nguyên tố đô tương bị thị tác double hình biệt tái gia tổng.

defsum(seqasduck):
y=0.0
k=0
forxasduckinseq:
y+=x
++k
returnk,y
importTokens

print"array sum is",sum((2.3,4.2,5.5))[1]
print"integers",sum((10,20,30,40,50))[1]
y=sum(Tokenizer("numbers.txt").Numbers())
print"num",y[0],"sum is",y[1]

Ngã môn khả dĩ tố đích canh hảo. Giá cá bản bổn khả dĩ chi viện sở hữu hình biệt, chỉ yếu hình biệt chi viện + vận toán tử:

defsum(seqasduck):
yasduck
k=0
forxasduckinseq:
ifk==0:
y=x
else:
y+=x
++k
returnk,y

Thượng nhất chương: Hình biệt chuyển hoánMục lụcHạ nhất chương: Hàm thức