Python-編程思路

案例:創建文件

(1)編寫一個程序文件,要求用戶名輸入文件名

(2)如果文件已存在,要求用戶重新輸入

(3)提示用戶輸入數據,每行數據先寫到列表中

(4)將列表數據寫入到用戶輸入的文件名中

 

1.發呆。思考程序的運作方式。交互?非交互?如果是交互的,程序有什麼輸出,要求用戶有什麼輸入。

# python mkfile.py
filename: /etc/hosts
文件已存在,請重試
filename: /etc
文件已存在,請重試
filename: /tmp/myfile.txt
請輸入內容,在單獨的一行上輸入end結束
(end to quit)> hello world!
(end to quit)> ni hao!
(end to quit)> how are you?
(end to quit)> end

# cat /tmp/myfile.txt
hello world!
ni hao!
how are you? 

2. 思考程序有哪些功能,將功能編寫成函數,這樣將大的、複雜的問題簡爲一個個的小的問題

def get_fname():
    '返回文件名'
    
def get_content():
    '返回內容'
    
def wfile(fname, content):
    '將內容content寫入文件fname

 

3.書寫主程序代碼,按順序調用函數

def get_fname():
    '返回文件名'

def get_content():
    '返回內容'

def wfile(fname, content):
    '將內容content寫入文件fname'

if __name__ == '__main__':
    fname = get_fname()
    content = get_content()
    wfile(fname, content)

 

4.填寫每個具體的函數主體代碼

import os

def get_fname():
    '返回文件名'
    while 1:
        fname = get_fname('filename:')
        if not os.path.exists(fname):
            break
        print('文件已存在,請重試!')

        return fname

def get_content():
    '返回內容'
    content = []

    print('請輸入內容,在單獨的一行上輸入end結束')
    while 1:
        line = input('end to quit:')
        if line == 'end':
            break
        content.append(line)
        
    return get_content()

def wfile(fname, content):
    '將內容content寫入文件fname'
    with open(fname, 'w') as fobj:
        fobj.writelines(content)

if __name__ == '__main__':
    fname = get_fname()
    content = get_content()
    content = ['%s\n' % line for line in content]
    wfile(fname, content)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章