1. 程式人生 > >3.從print到I/O

3.從print到I/O

為何對雙引號念念不忘?

>>> print("hello, world!")
hello, world!

  平x而論,既然在意雙引號的去掉,為何不在意括號的去掉?甚至是print的去掉?前面說過,python程式就是一堆指令的集合,print()就是試圖向計算機傳遞的指令,而print("hello, world!")這整個程式就是試圖讓計算機列印"hello, world!"的指令,所以當計算機最後顯示列印結果時只關注print()指令中的資料,因此,螢幕顯示就沒有顯示出print(),同理,更進一步,在將字串轉化成影象方陣顯示在螢幕的時候,把字串標識(雙引號或單引號)也隱去掉了!

print是I/O的一種方法

1. print

  print只是python程式輸出方法的一種,輸出使用者容易看懂的形式,而省掉其中相當多的細節,可以說是抽象化以及人性化吧。實際上,從程式執行到在螢幕上顯示,經過一系列的過程。計算機確實厲害。其實輸入輸出(I/O)是計算機的一個子系統,使計算機和外界可以相互間通訊,輸出系統負責將計算機的處理結果輸出到計算機外部,輸入系統負責從計算機外部接收輸入資料和程式,I/O裝置:鍵盤、滑鼠、顯示器、磁碟。

2. 表示式

>>> 1+1
2
>>> 2*2
4
>>> 1+2*3
7
>>> 

  由表示式輸出只顯示出來只有在互動式直譯器內才有效,而作為指令碼執行是不會打印出來的。

3. input()

>>> x=input('x:')
x:1
>>> x
'1'
>>> type(x)
<class 'str'>
>>> x=int(x)
>>> x
1
>>> type(x)
<class 'int'>

  input() 函式用一個字串作為其引數,然後顯示給使用者。然後等待使用者鍵入一些東西,按返回鍵。一旦使用者鍵入,input() 函式就返回該文字。

4. 檔案file

  要建立一個檔案,需要藉助於open函式,

>>> f=open(r'test.txt','w')
>>> f.write("hello, world!")
13
>>> f.close()    # 記得要關閉檔案才會寫入,否則一直在記憶體中儲存
>>> import json
>>> mydict={3:'I/o'}
>>> with open(r'test.txt', 'a', encoding='utf-8') as f:  # 'a'追加方式寫入,否則原來的hello world將刪除
f.write(json.dumps(mydict,ensure_ascii=False)+'\n')  # ensure_ascii=False,為了輸出中文


13   # 返回長度
>>> 

  此時,預設路徑下已經建立了test.txt檔案,並寫入了"hello, world!"。還有很多方法,以後再寫。至於最後檔案中的追加內容是這樣的{"3": "I/o"},因為json中的鍵值一定要用雙引號括起。json.dumps()方法將python資料結構轉化為json資料結構,將字典轉化為字串,寫入檔案中。另外json.loads()則將json資料轉化為python資料結構,將字串轉化為字典。其中自省不再贅述。json.dump()和json.load()主要用來讀寫json檔案。

  對於程式設計I/O,流是一個會涉及並很常見的概念,這裡先挖個坑,日後再填。