python數據結構輸入輸出及控制和異常
前言:
python數據類型: python數據結構之數據類型.
今天我們主要來介紹一些內置函數,比如輸入輸出,控制,和異常的用法,尤其是輸出和控制,用的太多瞭,寫算法題,輸出數據格式問題,對以後都會很有幫助。
1. 輸入 input
程序經常需要與用戶進行交互,以獲得數據或者提供某種結果。Python
提供瞭一個函數,它使得我們可以要求用戶輸入數據並且返回一個字 符串的引用。這個函數就是 input
。
#input案例 a=input("請輸入你的名字:") print('你的名字是:',a)
需要註意的是,input
函數返回的值是一個字符串,它包含用戶在提示字符串後面輸入的所有字符。如果需要將這個字符串轉換成其他類型,必須明確地提供類型轉換。在下面的語句中, 用戶輸入的字符串被轉換成瞭浮點數,以便於後續的算術處理。
type(a) #結果為str a=float(a) type(a) #結果為float
2. 輸出 print
2.1 普通輸出
print 函數為輸出 Python
程序的值提供瞭一種非常簡便的方法。它接受零個或者多個參數, 並且將單個空格作為默認分隔符來顯示結果。通過設置 sep 這一實際參數可以改變分隔符。此外,每一次打印都默認以換行符結尾。這一行為可以通過設置實際參數 end 來更改。下面是一些例子。
print('hello') #結果:hello print('hello','world') #結果:hello world print('hello','world',sep='***')#sep指定特定的分隔符 #結果:hello***world print('hello','world',end='****')#end 設置結尾參數 #結果:hello world****
2.2 格式化輸出
表達式的左邊部分是模板(也叫格式化字符串),右邊部分則是一系列用於格式化字符串的值。 需要註意的是,右邊的值的個數與格式化字符串中%的個數一致。這些值將依次從左到右地被換入格式化字符串。
格式化字符串可以包含一個或者多個轉換聲明。轉換字符告訴格式化運算符,什麼類型的值會被插入到字符串中的相應位置。在上面的例子中,%s 聲明瞭一個字符串,%d 則聲明瞭一個整數。其他可能的類型聲明還包括 i、u、 f、e、g、c 和%,
具體如下表所示:
可以在%和格式化字符之間加入一個格式化修改符。格式化修改符可以根據給定的寬度對值 進行左對齊或者右對齊,也可以通過小數點之後的一些數字來指定寬度。
格式化修改符表如下:
讓我們來看看一些案例:
name="apple" price=6 print("the %s costs %d cent" %(name,price)) #結果:the apple costs 6 cent print("The %+10s costs %5.2f cents" % (name,price))#+代表右對齊,10代表占用10個字符 #結果:The apple costs 6.00 cents print("The %+10s costs %10.2f cents" % (name,price))#10.2代表占用10個字符,並保留2位小數。 #結果:The apple costs 6.00 cents itemdict = {"item":"banana","cost":24}#使用字典傳遞參數 print("The %(item)s costs %(cost)7.1f cents" % itemdict) #結果:The banana costs 24.0 cents
3. 控制語句
算法需要兩個重要的控制結構:迭代和分支。Python 通過多種方式支持這兩種控制結構。程序員可以根據需要選擇最有效的結構。對於迭代,Python
提供瞭標準的 while
語句以及非常強大的 for
語句。while 語句會在給定條件為真時重復執行一段代碼。
count=1 while count<=5: print("河南加油!") count+=1 #結果如下: 河南加油! 河南加油! 河南加油! 河南加油! 河南加油! for item in '河南加油!': print(item) # 結果如下 河 南 加 油 ! for i in range(5): print(i) # 結果如下 0 1 2 3 4 #通過for語句輸出單個字符 wordlist = ['cat','dog','rabbit'] letterlist = [] for aword in wordlist: for aletter in aword: letterlist.append(aletter) letterlist #結果如下: ['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']
分支語句允許程序員進行詢問,然後根據結果,采取不同的行動。絕大多數的編程語言都提 供兩種有用的分支結構:ifelse
和 if
。以下是使用 ifelse 語句的一個簡單的二元分支示例。
import math n=float(input("請輸入一個數")) if n < 0: print("Sorry,") else: print(math.sqrt(n)) #結果:請輸入一個數 3 # 1.7320508075688772 #多條件分支 score=float(input("請輸入一個數")) if score >= 90: print('A') elif score >= 80: print('B') elif score >= 70: print('C') elif score >= 60: print('D') else: print('F') # 請輸入一個數 90 A
列表可以通過使用迭代結構和分支結構來創建。這種方式被稱為列表解析式。通過列表解析式,可以根據一些處理和分支標準輕松創建列表。舉例來說,如果想創建一個包含前 10 個完全平方數的列表,可以使用以下的 for 語句。
sqlist = [x*x for x in range(1,11) if x%2 != 0] # [1, 9, 25, 49, 81] [ch.upper() for ch in 'comprehension' if ch not in 'aeiou'] #['C', 'M', 'P', 'R', 'H', 'N', 'S', 'N']
4. 異常處理
在編寫程序時通常會遇到兩種錯誤:
- 第一種是語法錯誤,也就是說,程序員在編寫語句或者表達式時出錯。例如,在寫 for 語句時忘記加冒號。
- 第二種是邏輯錯誤,即程序能執行完成但返回瞭錯誤的結果。這可能是由於算法本身有錯, 或者程序員沒有正確地實現算法。有時,邏輯錯誤會導致諸如除以 0、越界訪問列表等非常嚴重的情況。這些邏輯錯誤會導致運行時錯誤,進而導致程序終止運行。通常,這些運行時錯誤被稱為異常。
當異常發生時,我們稱程序“拋出”異常。可以用 try 語句來“處理”被拋出的異常。
- 可以在
try
語句塊中調用print
函數來處理這個異常。對應的except
語句塊“捕捉”到 這個異常,並且為用戶打印一條提示消息。 - except 會捕捉到 sqrt 拋出的異常並打印提示消息,然後會使用對應數字的絕對值來保證 sqrt 的參數非負。這意味著程序並不會終止,而是繼續執行後續語句。
anumber = int(input("Please enter an integer ")) try: print(math.sqrt(anumber)) except: print("Bad Value for square root") print("Using absolute value instead") print(math.sqrt(abs(anumber)))
結果如下:
也可以使用 raise
語句來觸發運行時異常。例如,可以先檢查值是否為負,並在值為負時拋出異常,而不是給 sqrt 函數提供負數。下面的代碼段顯示瞭創建新的 RuntimeError
異常的結果。註意,程序仍然會終止,但是導致其終止的異常是由我們自己手動創建的。
anumber=-21 if anumber < 0: raise RuntimeError("You can't use a negative number") else: print(math.sqrt(anumber))
結果如下:
參考資料:
- 《python數據結構與算法》
- 《大話數據結構》
到此這篇關於python數據結構輸入輸出及控制和異常的文章就介紹到這瞭,更多相關python數據結構內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python實現學生管理系統並生成exe可執行文件詳解流程
- 深入瞭解Python的類與模塊化
- Python程序流程控制實驗
- Python基本數據類型之字符串str
- 淺析Python字符串中的r和u的區別