《笨方法學 Python 3》20 函式和檔案

2021-08-27 14:20:12 字數 2372 閱讀 8008

這節課的主要內容,就是呼叫函式來操作檔案,函式和檔案的結合使用;

理解起來可能有點麻煩,看不懂就自己寫一遍!

#匯入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...