一文帶你搞懂Python的輸入輸出
回復(fù)“Go語言”即可獲贈Python從入門到進(jìn)階共10本電子書
Hey,大家好呀,我是Go進(jìn)階者。
一、為什么要輸入和輸出?
無論是從 ?一開始的“hello world”,還是前面的各種例子,基本都是些“自說自話”,展示類的代碼片段。只有能夠接收用戶輸入,根據(jù)輸入代碼生成結(jié)果,并輸出到屏幕上展示出來,才算一個較為完整,簡單的程序。
二、 input輸入函數(shù)
獲取用戶輸入,保存成一個字符串。重要的話,說兩遍,input函數(shù)的返回值是一個字符串類型。哪怕你輸入的是個數(shù)字1,返回給你的只會是字符串“1”,而不是整數(shù)1。下面是一些簡單的展示例子:
#第一個例子> inp = input("please input your name: ")please input your name: jack> inp'jack'> type(inp)<class 'str'>#第二個例子age = input("please input your age: ")please input your age: 18print(age)'18'#第三個例子> type(age)<class 'str'>#第四個例子> a = input("請輸入一個字符:")'請輸入一個字符:前后帶有空白'> a' 前后帶有空白 '
????第一個例子中,inp = input("please input your name: "),input函數(shù)里可以提供一個字符串,用來給用戶進(jìn)行輸入提示。input函數(shù)的返回值賦值給inp這個變量后,inp里就保存了用戶輸入的值。
type是Python內(nèi)置的函數(shù)之一,非常有用,用于查看對象的數(shù)據(jù)類型。
第二個例子, ?輸入了年齡18,但age里保存的是一個“18”的字符串。
第三個例子,什么都沒輸入,返回的是一個空字符串。
第四個例子,有效輸入的前后空白被保留在了返回的字符串中。
從上面例子的展示中,不難發(fā)現(xiàn),input函數(shù)將用戶的輸入原樣不動的返回給了變量 ,并包裝成一個字符串。這肯定是不行的,會帶來很多問題,所以通常都需要對用戶輸入進(jìn)行處理和判定。
對空輸入進(jìn)行處理:
inp = input("請輸入你的姓名: ")if inp == "":inp = input("姓名不能為空,請重新輸入: ")
將字符串轉(zhuǎn)換成數(shù)字類型:
age = input("請輸入你的年齡:")age = int(age) # 將字符串轉(zhuǎn)化為整數(shù)if age > 18:print("你已經(jīng)成年!")else:print("還沒斷奶?")
去除開頭的空白lstrip,去除結(jié)尾的空白rstrip以及去除兩端的空白strip
inp = input("請輸入你的姓名: ")inp = inp.strip() # strip的用法在字符串?dāng)?shù)據(jù)類型有講述print(inp)
判斷輸入的字符類型
前面在將字符串轉(zhuǎn)化為整數(shù)用的是int()函數(shù),這種方式有危險的,看下面的例子:
s = "123"a = int(s)print(a)s = "something"a = int(s)

對于形如“123”, “283242”的字符串,轉(zhuǎn)化沒問題,但是對于包含字符、特殊字符的字符串就沒辦法轉(zhuǎn)化了,會彈出異常錯誤。所以在使用int函數(shù)之前,要先對輸入進(jìn)行判斷。?
修改一下上面的例子:
age = input("請輸入你的年齡:")if age.isdigit(): # 使用isdigit函數(shù)判斷輸入是否全是數(shù)字格式age = int(age) # 將字符串轉(zhuǎn)化為整數(shù)print("你的年齡是:", age)else:print("輸入不合法!")


input函數(shù)有時可以巧妙地用于阻塞或暫停程序
print("程序前面部分執(zhí)行完畢......")input("請按回車?yán)^續(xù)......") # 在這里程序會暫停,等待你的回車動作print("繼續(xù)執(zhí)行程序的后面部分......")
此時的input函數(shù)不會將輸入保存下來,只是用作暫停程序動作。
三、 print輸入函數(shù)
print函數(shù)用于將內(nèi)容格式化顯示在標(biāo)準(zhǔn)輸出上,主要指的是屏幕顯示器。
print可以接受多個字符串,字符串類型的變量或者可print的對象。每個字符串用逗號“,”隔開,連成一串輸出。print會依次打印每個字符串,同時,每遇到一個逗號“,”就輸出一個空格。
a = "i am"b = "student"print(a,"a", b)# 自動以空格分隔print(a+"a"+b)

????對于形如print(a+"a"+b)的語句,其實是先計算a+"a"+b的值,然后再通過print打印它。print()會自動執(zhí)行內(nèi)部的語句,輸出想要的結(jié)果。再看一個例子:
> a = 10> b = 2> print(sum((a, a*b))) # 先求a*b,再求和,再打印30 #結(jié)果
?看一下print函數(shù)的原型:print(self, *args, sep=' ', end='\n', file=None)
sep參數(shù): 分隔的符號,默認(rèn)是一個空格;
end參數(shù): 打印后的結(jié)束方式,默認(rèn)為換行符\n。如果,設(shè)置end='',則可以不換行,讓print在一行內(nèi)連續(xù)打印?;钣胮rint的參數(shù),可以實現(xiàn)靈活的打印控制。
> a = "i am"> b = "student"> print(a,"a" , b, sep="*")i am*a*student #輸出結(jié)果
四、 print格式化輸出
在Python2.6以后,有兩種格式化輸出的方式。
一種就是類似C語言的printf的%百分號格式化輸出,也是Python最基礎(chǔ)最常用的格式化輸出方式。另一種就是str.format()的方式。
這里 ?重點講述一下傳統(tǒng)的%百分號格式化輸出方式,
以下面的語句為例:
print ("我叫 %s 今年 %d 歲!" % ('小明', 10))首先構(gòu)造一個字符串"我叫 %s 今年 %d 歲!",將其中需要用別的變量或值替代的部分,用%百分符加一個數(shù)據(jù)類型代號,比如%s、%d來代替。然后在字符串的后面用%加一個同樣數(shù)量變量或值的元組。
也就是前面有多少個%符號,后面就要提供多少個參數(shù)值,每個參數(shù)值之間用逗號隔開,所有參數(shù)用圓括號括起來。每個參數(shù)與前面的%一一對應(yīng),并且數(shù)據(jù)類型也要能夠合法對應(yīng)。
這是基本用法,更多的格式見下圖,然后掌握格式的搭配方法。
格式化符號:(圖片來源于百度,侵權(quán)請聯(lián)系刪除)

格式化操作符輔助指令:(圖片來源于百度,侵權(quán)請聯(lián)系刪除)

經(jīng)典案例:
s = "i am %s" % "jack"print(s)s = "i am %s age %d" % ("jack", 18)print(s)s = "i am %(name)s age %(age)d" % {"name": "jack", "age": 18}print(s)s = "percent %.2f" % 99.97623print(s)s = "i am %(pp).2f" % {"pp": 123.425556, }print(s)s = "i am %.2f %%" % 123.425556print(s)

????需要特別說明的是,如果你想在print中打印一個%百分符號本身,那么你需要使用%%,兩個百分符轉(zhuǎn)義出一個百分符,也就是print("%%")。
????如果你對print復(fù)雜的格式化控制無愛,對美觀也沒有要求,那么簡單傻瓜式的一路用%s作為占位符,是種省事的做法。例如:
print("%s %s %s %s %s" % (a, b, c, d, e))五、總結(jié)
????本文基于Python基礎(chǔ),介紹了常見的幾種輸入和輸出的幾種方式,通過一個個項目的實際操作,能夠更好的理解輸入和輸出語句的用法。在項目實踐過程中遇到的難點,需要注意的點做了詳細(xì)講解。
????希望能夠幫助讀者更好的學(xué)習(xí)Python。我是Go進(jìn)階者,如果覺得還不錯,記得動手點贊一下哈。感謝你的觀看!
-------------------?End?-------------------
歡迎大家點贊,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
