這節課的主要內容,就是呼叫函式來操作檔案,函式和檔案的結合使用;
理解起來可能有點麻煩,看不懂就自己寫一遍!
#匯入argv模組
from sys import argv
#解包script, input_file = argv
#定義乙個函式:讀取並列印傳參檔案
def print_all(f):
print(f.read())
#定義乙個函式:跳轉到傳參檔案的0位元組,也就是第1個位元組
def rewind(f):
f.seek(0)
#定義乙個函式:列印傳參的行數及該行的內容
def print_a_line(line_count, f):
print(line_count, f.readline())
#開啟檔案物件,並把檔案物件賦值給變數
current_file = open(input_file)
print("首先讓我們列印整個檔案:\n")
#呼叫函式:讀取並列印
print_all(current_file)
print("現在讓我們倒帶,有點像磁帶。")
#呼叫函式:跳轉到檔案的首位元組
rewind(current_file)
print("讓我們列印三行:")
#給1取個變數名
current_line = 1
#呼叫函式:列印行數,和檔案的一行內容;第乙個傳參是變數current_line,第二個傳參是變數current_file)
print_a_line(current_line, current_file)
#同34#和37#
current_line = current_line + 1
print_a_line(current_line, current_file)
#同34#和37#
1. seek(0)為什麼不把current_line設定成0?
因為seek(0)是跳轉到檔案的0位元組,也就是第1個位元組,也就是說在首行,所以current_line設定成1;
2.readline是怎麼知道每一行在**的?
readline()會掃瞄檔案的每乙個位元組,直到找到第乙個\n(也就是換行符)時為止,然後它會返回此次發現的所有內容,包括\n本身;檔案也會記錄每次readline()讀取的位置,下次readline()再讀取時就會從之前記錄的位置開始讀取,而不是從頭開始;
3.為什麼結果裡會有間隔符(空行)?
因為readline()返回的結果本身就帶有\n,而print()在列印時又會新增乙個\n,所以就會多出一行;解決辦法就是在print()函式的末尾多加乙個引數end = "",這樣print()就不會自己新增\n了;
+=是什麼? +=是乙個簡寫,x += y的意思就是x = x + y;
然後我們用這個簡寫用在習題的**中:
from sys import argv
script, input_file = argv
def print_all(f):
print(f.read())
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print(line_count, f.readline())
current_file = open(input_file)
print("首先讓我們列印整個檔案:\n")
print_all(current_file)
print("現在讓我們倒帶,有點像磁帶。")
rewind(current_file)
print("讓我們列印三行:")
current_line = 1
print_a_line(current_line, current_file)
current_line += 1
print_a_line(current_line, current_file)
current_line += 1
print_a_line(current_line, current_file)
注意第30和33行**,使用的+=簡寫,和之前不一樣了,但是結果是一樣的!!!
Python3 20 輾轉相除法
一.演算法分析 1.演算法定義為 在有限的步驟內解決數學問題的程式,即為了解決某項工作或某個問題,所需要有限數量的機械性或重複性指令與計算步驟。2.最大公約數 可整除兩個整數的最大整數。3.用兩個數中較大的整數除以較小的數,求得商和餘數。二.源 coding gbk num 1 int input ...
笨方法學python
書結構非常簡單,其實就是 52 個習題而已。其中 26 個覆蓋了輸入輸出 變數 以及函式三個課題,另外 26 個覆蓋了一些比較高階的話題,如條件判斷 迴圈 類和物件 測試 以及專案的實現等。每一章節的格式基本都是一樣的,以 練習題開始,讀者照著說明 編寫 不允許複製貼上 執行並檢查結果,然後再做一下...
笨方法學python 一
print i like typing this print this is fun print i said do not touch this.如果用同種引號會報錯 file ex1.py line 8 print i said do not touch this.syntaxerror inv...