白話python連載(3)巧妙使用輸入輸出

白話python連載(3)巧妙使用輸入輸出

來自專欄數據小屋

歡迎關注公眾號【哈希大數據】

【白話python連載(1)】 一起遇見python

【白話python連載(2)】 python的程序結構

【白話python連載(3)】 巧妙使用輸入輸出

【白話python連載(4.1)】 python的數據類型

【白話python連載(4.2)】 python的數據類型

【白話python連載(5)】 python的條件語句

【白話python連載(6)】 python的循環語句

【白話python連載(7.1)】 python的函數應用

【白話python連載(7.2)】 python的模塊介紹

【白話python連載(8)】 python的異常處理

【白話python連載(9.1)】 使用python處理文件

【白話python連載(9.2)】 python的os模塊

【白話python連載(10)】 python的內置函數

〖 python小應用 〗

問題描述:在有序的數組中新插入一個不存在的數,並且保持該數組仍然有序

import randomdef ori_data(start, stop, length): #準確指定起始範圍由小到大 start,stop = (int(start),int(stop)) if start <= stop else (int(stop),int(start)) length = int(abs(length)) if length else 0 if int(abs(start-stop)) < length: print(所選範圍不符合要求,請重新指定) return None else: #利用隨機函數生成隨機數組,並且保證數值唯一 random_list = [] for i in range(length): one_number = random.randint(start, stop) while one_number in random_list: one_number = random.randint(start,stop) print(有重複,已經重新生成) random_list.append(one_number) random_list = sorted(random_list) return random_listif __name__ == __main__: ori_data = ori_data(38,22,10) print(新生成的數組為:{}.format(ori_data))

運行結果

D:/vernacular/coding_ziyi/InsertAndSort.py有重複,已經重新生成有重複,已經重新生成有重複,已經重新生成新生成的數組為:[23, 25, 26, 31, 32, 34, 35, 36, 37, 38]

問題描述:按格式輸出九九乘法表

#!/usr/bin/python# -*- coding: utf-8 -*-for i in range(1,10): for j in range(1,i+1): multip = i * j print({}*{}={}.format(j,i,multip),end= ) print()

運行結果

D:/vernacular/coding_ziyi/multiplication_table.py11=1*12=2 22=413=3 23=6 33=9*14=4 24=8 34=12 44=1615=5 25=10 35=15 45=20 55=25*16=6 26=12 36=18 46=24 56=30 66=3617=7 27=14 37=21 47=28 57=35 67=42 77=49*18=8 28=16 38=24 48=32 58=40 68=48 78=56 88=6419=9 29=18 39=27 49=36 59=45 69=54 79=63 89=72 99=81*

問題描述:使用遞歸調用的方法計算某個數的階乘

#!/usr/bin/python# -*- coding: utf-8 -*-import sysdef Factorial(num): if num == 1 : return 1 else: result = num * Factorial(num-1) return resultif __name__ == __main__ : print(請輸出你要計算的數: ) first_num = int(sys.stdin.readline( )) # first_num = int(input(請輸入你要計算的數: )) result = Factorial(first_num) sys.stdin.write({}的階乘是:{}.format(first_num, result))

運行結果

D:/vernacular/coding_ziyi/recursive.py請輸入你要計算的數: 55的階乘是:120

上述三個小實例,演示了利用python進行輸入和輸出具體交互。可以在特定位置指定輸出內容,進一步了解程序運行過程;完成格式化輸出,更加清晰展示運行結果。最重要的是,可以輸入不同內容而完成特定的功能。

接下來我們就來具體了解一下python的輸入和輸出的應用和實現。

〖 python的輸入輸出 〗

input----****根據實際需求指定輸入內容的類型

python的內置函數input()可以接受用戶輸入的相關內容,提供給計算機程序所需的信息,更好的完成特定的任務。在python3.x中raw_input( )和input( )進行了整合,去除了raw_input( ),僅保留了input( )函數,其接收任意任性輸入,將所有輸入默認為字元串處理,並返回字元串類型。

#案例三first_num = int(input(請輸入你要計算的數: ))

以第三個案例為例,就是為了獲得用戶想要計算階乘的一個數字,但是input函數是以字元串的格式存儲用戶輸入的內容的,因此需要在只輸入之前強制轉化一下數據的類型。而常用的類型轉換函數還有str、float、list以及一些第三方包numpy和pandas中特有的類型array、DataFrame、series等等。

有了輸入,計算機程序可以更好的按照需求完成相關任務。但是程序也需要將運行結果輸出,讓用戶更好地明確程序的準確性。同樣python的內置函數print()就可以很好的完成這一要求。按照常規套路,在安裝教程中通常都會執行print(『hello world』)來驗證開發環境是否安裝成功。因此輸出函數是輔助調試程序的很好地助手。養成良好的格式化輸出習慣,對於調整複雜程序或許能起到事半功倍的效果。

print----****建立良好的輸出習慣

print(『hello world』)是輸出單個字元串,如果要輸出多個字元串,可以以逗號分隔每個字元串並且在同一行完成一條print操作,執行完一條print操作會默認執行換行操作,因此如果想要多語句同時輸出到同一行,則可以指定參數end=『,』完成連接多行輸出。而且也可以直接在輸出中完成數值運算操作(字元串格式的內容必須寫入引號中,數值型不需要)。

5.png

在上面的小應用中使用的是格式化動態輸出變數的方法,這是python2.6之後推出新的格式化方法。按照指定位置(或設置參數)完成變數的格式化輸出。format中有豐富的格式限定符,有很多格式限定方法,使用更加靈活,兩種格式化方式如下:

#指定參數名稱print(新生成的數組為:{name}.format(name=ori_data))#使用位置參數print({0}*{1}={2}.format(j,i,multip),end= )

傳統的格式化方法【print(『%s*%s=%s』%j,%i,%multip)】也依舊是可以應用的,但是更多的是推薦使用新的格式化方法。

stdin&&stdout----python的標準輸入輸出

除了python內置的輸入輸出函數input和print,sys.stdin與sys.stdout(python的標準輸入輸出)也可以等價的完成類似的功能。因為input和print在原則就是通過調用sys.stdin的readline()方法和sys.stdout的write()方法上述兩種方法而完成輸入輸出的,python內置的input和print操作也更便捷,input可以直接內置提示語,不需要另外輸出提示語。但是sys.stdin與sys.stdout也有其他不同的功能,要根據實際需求看是否要應用標準的文件格式的輸入輸出操作。

〖 總結 〗

總之,一個完善的python應用的形成不會是一蹴而就的,因此每次在編寫應用程序時,需要不斷的進行代碼的調試。這時為了很好的找到問題的癥結所在,就需要很好地藉助python的輸入輸出函數來完善python程序。


推薦閱讀:

Python GUI:PyQt安裝及使用
如何使用PyCharm開發和調試伺服器上的代碼
PyQt5系列教程(12):構建我們自己的密碼輸入框
分分鐘,殺入Kaggle TOP 5% 系列(2)
老闆,來一個WebServer——VLCP框架簡介

TAG:科技 | Python | 計算機科學 |