python數(shù)據(jù)結(jié)構(gòu)輸入輸出及控制和異常
前言:
python數(shù)據(jù)類型: python數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)據(jù)類型.
今天我們主要來(lái)介紹一些內(nèi)置函數(shù),比如輸入輸出,控制,和異常的用法,尤其是輸出和控制,用的太多了,寫算法題,輸出數(shù)據(jù)格式問題,對(duì)以后都會(huì)很有幫助。
1. 輸入 input
程序經(jīng)常需要與用戶進(jìn)行交互,以獲得數(shù)據(jù)或者提供某種結(jié)果。Python
提供了一個(gè)函數(shù),它使得我們可以要求用戶輸入數(shù)據(jù)并且返回一個(gè)字 符串的引用。這個(gè)函數(shù)就是 input
。
#input案例 a=input("請(qǐng)輸入你的名字:") print('你的名字是:',a)
需要注意的是,input
函數(shù)返回的值是一個(gè)字符串,它包含用戶在提示字符串后面輸入的所有字符。如果需要將這個(gè)字符串轉(zhuǎn)換成其他類型,必須明確地提供類型轉(zhuǎn)換。在下面的語(yǔ)句中, 用戶輸入的字符串被轉(zhuǎn)換成了浮點(diǎn)數(shù),以便于后續(xù)的算術(shù)處理。
type(a) #結(jié)果為str a=float(a) type(a) #結(jié)果為float
2. 輸出 print
2.1 普通輸出
print 函數(shù)為輸出 Python
程序的值提供了一種非常簡(jiǎn)便的方法。它接受零個(gè)或者多個(gè)參數(shù), 并且將單個(gè)空格作為默認(rèn)分隔符來(lái)顯示結(jié)果。通過設(shè)置 sep 這一實(shí)際參數(shù)可以改變分隔符。此外,每一次打印都默認(rèn)以換行符結(jié)尾。這一行為可以通過設(shè)置實(shí)際參數(shù) end 來(lái)更改。下面是一些例子。
print('hello') #結(jié)果:hello print('hello','world') #結(jié)果:hello world print('hello','world',sep='***')#sep指定特定的分隔符 #結(jié)果:hello***world print('hello','world',end='****')#end 設(shè)置結(jié)尾參數(shù) #結(jié)果:hello world****
2.2 格式化輸出
表達(dá)式的左邊部分是模板(也叫格式化字符串),右邊部分則是一系列用于格式化字符串的值。 需要注意的是,右邊的值的個(gè)數(shù)與格式化字符串中%的個(gè)數(shù)一致。這些值將依次從左到右地被換入格式化字符串。
格式化字符串可以包含一個(gè)或者多個(gè)轉(zhuǎn)換聲明。轉(zhuǎn)換字符告訴格式化運(yùn)算符,什么類型的值會(huì)被插入到字符串中的相應(yīng)位置。在上面的例子中,%s 聲明了一個(gè)字符串,%d 則聲明了一個(gè)整數(shù)。其他可能的類型聲明還包括 i、u、 f、e、g、c 和%,
具體如下表所示:
可以在%和格式化字符之間加入一個(gè)格式化修改符。格式化修改符可以根據(jù)給定的寬度對(duì)值 進(jìn)行左對(duì)齊或者右對(duì)齊,也可以通過小數(shù)點(diǎn)之后的一些數(shù)字來(lái)指定寬度。
格式化修改符表如下:
讓我們來(lái)看看一些案例:
name="apple" price=6 print("the %s costs %d cent" %(name,price)) #結(jié)果:the apple costs 6 cent print("The %+10s costs %5.2f cents" % (name,price))#+代表右對(duì)齊,10代表占用10個(gè)字符 #結(jié)果:The apple costs 6.00 cents print("The %+10s costs %10.2f cents" % (name,price))#10.2代表占用10個(gè)字符,并保留2位小數(shù)。 #結(jié)果:The apple costs 6.00 cents itemdict = {"item":"banana","cost":24}#使用字典傳遞參數(shù) print("The %(item)s costs %(cost)7.1f cents" % itemdict) #結(jié)果:The banana costs 24.0 cents
3. 控制語(yǔ)句
算法需要兩個(gè)重要的控制結(jié)構(gòu):迭代和分支。Python 通過多種方式支持這兩種控制結(jié)構(gòu)。程序員可以根據(jù)需要選擇最有效的結(jié)構(gòu)。對(duì)于迭代,Python
提供了標(biāo)準(zhǔn)的 while
語(yǔ)句以及非常強(qiáng)大的 for
語(yǔ)句。while 語(yǔ)句會(huì)在給定條件為真時(shí)重復(fù)執(zhí)行一段代碼。
count=1 while count<=5: print("河南加油!") count+=1 #結(jié)果如下: 河南加油! 河南加油! 河南加油! 河南加油! 河南加油! for item in '河南加油!': print(item) # 結(jié)果如下 河 南 加 油 ! for i in range(5): print(i) # 結(jié)果如下 0 1 2 3 4 #通過for語(yǔ)句輸出單個(gè)字符 wordlist = ['cat','dog','rabbit'] letterlist = [] for aword in wordlist: for aletter in aword: letterlist.append(aletter) letterlist #結(jié)果如下: ['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']
分支語(yǔ)句允許程序員進(jìn)行詢問,然后根據(jù)結(jié)果,采取不同的行動(dòng)。絕大多數(shù)的編程語(yǔ)言都提 供兩種有用的分支結(jié)構(gòu):ifelse
和 if
。以下是使用 ifelse 語(yǔ)句的一個(gè)簡(jiǎn)單的二元分支示例。
import math n=float(input("請(qǐng)輸入一個(gè)數(shù)")) if n < 0: print("Sorry,") else: print(math.sqrt(n)) #結(jié)果:請(qǐng)輸入一個(gè)數(shù) 3 # 1.7320508075688772 #多條件分支 score=float(input("請(qǐng)輸入一個(gè)數(shù)")) if score >= 90: print('A') elif score >= 80: print('B') elif score >= 70: print('C') elif score >= 60: print('D') else: print('F') # 請(qǐng)輸入一個(gè)數(shù) 90 A
列表可以通過使用迭代結(jié)構(gòu)和分支結(jié)構(gòu)來(lái)創(chuàng)建。這種方式被稱為列表解析式。通過列表解析式,可以根據(jù)一些處理和分支標(biāo)準(zhǔn)輕松創(chuàng)建列表。舉例來(lái)說(shuō),如果想創(chuàng)建一個(gè)包含前 10 個(gè)完全平方數(shù)的列表,可以使用以下的 for 語(yǔ)句。
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. 異常處理
在編寫程序時(shí)通常會(huì)遇到兩種錯(cuò)誤:
- 第一種是語(yǔ)法錯(cuò)誤,也就是說(shuō),程序員在編寫語(yǔ)句或者表達(dá)式時(shí)出錯(cuò)。例如,在寫 for 語(yǔ)句時(shí)忘記加冒號(hào)。
- 第二種是邏輯錯(cuò)誤,即程序能執(zhí)行完成但返回了錯(cuò)誤的結(jié)果。這可能是由于算法本身有錯(cuò), 或者程序員沒有正確地實(shí)現(xiàn)算法。有時(shí),邏輯錯(cuò)誤會(huì)導(dǎo)致諸如除以 0、越界訪問列表等非常嚴(yán)重的情況。這些邏輯錯(cuò)誤會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤,進(jìn)而導(dǎo)致程序終止運(yùn)行。通常,這些運(yùn)行時(shí)錯(cuò)誤被稱為異常。
當(dāng)異常發(fā)生時(shí),我們稱程序“拋出”異常??梢杂?try 語(yǔ)句來(lái)“處理”被拋出的異常。
- 可以在
try
語(yǔ)句塊中調(diào)用print
函數(shù)來(lái)處理這個(gè)異常。對(duì)應(yīng)的except
語(yǔ)句塊“捕捉”到 這個(gè)異常,并且為用戶打印一條提示消息。 - except 會(huì)捕捉到 sqrt 拋出的異常并打印提示消息,然后會(huì)使用對(duì)應(yīng)數(shù)字的絕對(duì)值來(lái)保證 sqrt 的參數(shù)非負(fù)。這意味著程序并不會(huì)終止,而是繼續(xù)執(zhí)行后續(xù)語(yǔ)句。
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)))
結(jié)果如下:
也可以使用 raise
語(yǔ)句來(lái)觸發(fā)運(yùn)行時(shí)異常。例如,可以先檢查值是否為負(fù),并在值為負(fù)時(shí)拋出異常,而不是給 sqrt 函數(shù)提供負(fù)數(shù)。下面的代碼段顯示了創(chuàng)建新的 RuntimeError
異常的結(jié)果。注意,程序仍然會(huì)終止,但是導(dǎo)致其終止的異常是由我們自己手動(dòng)創(chuàng)建的。
anumber=-21 if anumber < 0: raise RuntimeError("You can't use a negative number") else: print(math.sqrt(anumber))
結(jié)果如下:
參考資料:
- 《python數(shù)據(jù)結(jié)構(gòu)與算法》
- 《大話數(shù)據(jù)結(jié)構(gòu)》
到此這篇關(guān)于python數(shù)據(jù)結(jié)構(gòu)輸入輸出及控制和異常的文章就介紹到這了,更多相關(guān)python數(shù)據(jù)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python創(chuàng)建列表和向列表添加元素的實(shí)現(xiàn)方法
下面小編就為大家分享一篇python創(chuàng)建列表和向列表添加元素的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2017-12-12Python實(shí)現(xiàn)多條件篩選目標(biāo)數(shù)據(jù)功能【測(cè)試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)多條件篩選目標(biāo)數(shù)據(jù)功能,結(jié)合實(shí)例形式總結(jié)分析了Python3使用內(nèi)建函數(shù)filter、pandas包以及for循環(huán)三種方法對(duì)比分析了列表進(jìn)行條件篩選操作相關(guān)實(shí)現(xiàn)技巧與運(yùn)行效率,需要的朋友可以參考下2018-06-06django實(shí)現(xiàn)用戶注冊(cè)實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于django用戶注冊(cè)的相關(guān)實(shí)例內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-10-10簡(jiǎn)單了解python關(guān)鍵字global nonlocal區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解python關(guān)鍵字global nonlocal區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09