Python中input()函數(shù)的用法實(shí)例小結(jié)
一:input()函數(shù)的輸入機(jī)制
我們編寫(xiě)的大部分程序,都需要讀取輸入并對(duì)其進(jìn)行處理,而基本的輸入操作是從鍵盤(pán)鍵入數(shù)據(jù)。Python從鍵盤(pán)鍵入數(shù)據(jù),大多使用其內(nèi)置的input()函數(shù)。但是,不同于程序設(shè)計(jì)初學(xué)者常接觸的C和C++,我們不需要在輸入之時(shí)規(guī)定變量的類(lèi)型。相反,我們可以非常便捷的使用a = input()對(duì)任何數(shù)據(jù)類(lèi)型的變量a進(jìn)行賦值,無(wú)論是int,float還是列表等等。但是這并不代表Python將程序員的判斷數(shù)據(jù)類(lèi)型工作完全省去了,如果這樣想,那么在編程過(guò)程中很容易出現(xiàn)問(wèn)題。我們知道,在對(duì)變量進(jìn)行賦值時(shí),Python會(huì)幫助判斷存儲(chǔ)數(shù)據(jù)的類(lèi)型,不需要我們進(jìn)行操作,但是input不是這樣。
首先,我們需要弄明白我們賦值的變量在python內(nèi)部到底是以什么形式存在的。下面我將展示一個(gè)程序片段
那么我們可以看到,通過(guò)type()函數(shù),我們看到無(wú)論我們輸入的值是int,float還是sring,最后input()函數(shù)返回的這個(gè)數(shù)據(jù)的類(lèi)型均為string型。了解了這一點(diǎn),將有利于我們更好的使用input()函數(shù)。因?yàn)樵谒阈g(shù)運(yùn)算中,字符串是沒(méi)法直接和int或float數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算的,如果直接使用,那么必然帶來(lái)TypeError報(bào)錯(cuò)。
即使不報(bào)錯(cuò),我們使用兩個(gè)直接input()函數(shù)鍵入的數(shù)據(jù)進(jìn)行計(jì)算,那么很可能是在對(duì)兩個(gè)字符串進(jìn)行組合而不是算術(shù)運(yùn)算
二:input()函數(shù)常涉及的強(qiáng)制類(lèi)型轉(zhuǎn)換
所以,當(dāng)我們使用input()函數(shù)輸入的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算時(shí),我們大多需要使用強(qiáng)制類(lèi)型轉(zhuǎn)換來(lái)允許我們計(jì)算。得益于Python便捷的數(shù)據(jù)類(lèi)型轉(zhuǎn)換,我們可以十分方便的轉(zhuǎn)換數(shù)據(jù)類(lèi)型。
第一種是在鍵入時(shí)進(jìn)行轉(zhuǎn)換,例如:a = int(input())。這樣賦值的數(shù)據(jù)存儲(chǔ)的形式從一開(kāi)始就是我們轉(zhuǎn)換的數(shù)據(jù)類(lèi)型,與C語(yǔ)言,C++等無(wú)異。
第二種則是在使用時(shí)進(jìn)行轉(zhuǎn)換。這樣賦值的數(shù)據(jù)存儲(chǔ)的形式仍是input()返回的字符串類(lèi)型,僅僅在使用時(shí)轉(zhuǎn)換,會(huì)加大工作量,且有可能因?yàn)榇中膸?lái)報(bào)錯(cuò),所以要謹(jǐn)慎使用。
三:帶提示的input()函數(shù)及其常見(jiàn)問(wèn)題
在初見(jiàn)input()時(shí),我發(fā)現(xiàn)了 variable = input(prompt)這個(gè)輸入格式,一下子驚如天人。覺(jué)得Python的input()函數(shù)的用戶(hù)交互真是友善,從此不再需要再像其他一些編程語(yǔ)言一樣單獨(dú)寫(xiě)一個(gè)用戶(hù)提示語(yǔ)。以下面一個(gè)片段為例
可以看到,當(dāng)我們敲擊Enter以后,屏幕上會(huì)顯示我們編寫(xiě)的提示性語(yǔ)言,并等待用戶(hù)輸入。這樣給交互性程序編寫(xiě)帶來(lái)了便利。
但是,我很快在使用variable = input(prompt)這個(gè)形式時(shí)遇到了問(wèn)題,當(dāng)我理所當(dāng)然的把input(prompt)中的prompt當(dāng)作print()函數(shù)使用時(shí),我發(fā)現(xiàn)input()并不能將變量賦值返回給程序。也就是說(shuō),如果我們?cè)趇nput()的提示性語(yǔ)言中加入了變量,就很可能出錯(cuò),例如:
這個(gè)問(wèn)題的原因是variable = input(prompt)是直接以字符串形式輸出提示性的prompt語(yǔ)言,不能像print()函數(shù)一樣將值賦給變量并輸出。那么這是不是意味著我們不能將變量加入其中呢?畢竟在很多循環(huán)中,提示性的語(yǔ)言是需要根據(jù)循環(huán)次數(shù)改變的。
那么實(shí)際上我們是可以加入的,解決方法就是上面講過(guò)的強(qiáng)制類(lèi)型轉(zhuǎn)換,正因?yàn)槲覀円呀?jīng)知道input()以字符串形式輸出,所以需要我們將變量轉(zhuǎn)化成string型!但是,需要注意的是,使用的符號(hào)是用于字符串連接的“+”而不是分割字符串和變量的“,”——這里需要注意。
四:利用input()一次性輸入多個(gè)變量值
我們?cè)诰幊痰臅r(shí)候,常常需要一次性給多個(gè)變量賦值。在C語(yǔ)言和C++中,我們使用scanf("%d %d", &a,&b)這樣的方式進(jìn)行輸入,其數(shù)據(jù)以空格為分界。那么在python中我們?cè)撊绾我淮涡暂斎攵鄠€(gè)值呢?
(1):利用split()函數(shù)進(jìn)行輸入,同時(shí),我們不僅可以利用split()函數(shù)一次性輸入多個(gè)數(shù),我們還可以設(shè)置分隔符,除了傳統(tǒng)的空格形式,也可以用逗號(hào)“,”這種更符合語(yǔ)言習(xí)慣的方式分隔輸入字符。其原理是因?yàn)閕nput()輸入了一個(gè)字符串,而split()函數(shù)能根據(jù)設(shè)定的分割點(diǎn)分割字符串并返回分割后的字符串列表,所以能實(shí)現(xiàn)一次性輸入多個(gè)數(shù)據(jù)值。范例如下:
但是,這樣輸入的值仍是字符串型,我們?cè)谏厦嬉呀?jīng)說(shuō)過(guò)字符串無(wú)法直接參與運(yùn)算,最好輸入時(shí)進(jìn)行類(lèi)型轉(zhuǎn)換,那么,按照我們第二點(diǎn)的方法轉(zhuǎn)換多輸入值可行嗎?
可以看到,這樣是不可以的,那么為什么上面單輸入可以而多輸入報(bào)錯(cuò)呢?原因我們其實(shí)已經(jīng)說(shuō)過(guò)了,split()函數(shù)返回的是一個(gè)列表,spring當(dāng)然能被轉(zhuǎn)換成int型,但是列表是沒(méi)法被這樣直接轉(zhuǎn)換的,所以我們需要用另一個(gè)函數(shù)map()來(lái)實(shí)現(xiàn)多輸入的強(qiáng)制類(lèi)型轉(zhuǎn)換。
map()函數(shù)接受兩個(gè)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map()將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的list返回。我們將傳入的函數(shù)設(shè)置為強(qiáng)制類(lèi)型轉(zhuǎn)換函數(shù)int,則split()函數(shù)返回的列表里的每一個(gè)值都將被強(qiáng)制轉(zhuǎn)換類(lèi)型,從而實(shí)現(xiàn)多輸入的類(lèi)型轉(zhuǎn)換。范例如下:
附:input()函數(shù)結(jié)果的強(qiáng)制轉(zhuǎn)換
choice=input('請(qǐng)選擇1或2') if choice=='1': print('正確') else: print('錯(cuò)誤')
上面這段代碼很簡(jiǎn)單,僅有兩個(gè)選項(xiàng),如果上面代碼不是兩個(gè),而是幾十個(gè),幾百個(gè),難道我們要一個(gè)一個(gè)打'1','2','3','4','5',.....'200','201'.....,這時(shí)我們要想辦法簡(jiǎn)單一點(diǎn),那就是把所有的數(shù)據(jù)的類(lèi)型都轉(zhuǎn)換成整型,但是上面不是說(shuō)了input()函數(shù)的返回都為string類(lèi)型嗎?其實(shí)在某些特殊情況下是可以被強(qiáng)制轉(zhuǎn)換的,
choice=int(input('請(qǐng)選擇1或2')) if choice==1: print('正確') else: print('錯(cuò)誤') ------------------------------ 請(qǐng)選擇1或2 1 正確
只要在input()函數(shù)前面加上int(),就可以把input()函數(shù)的結(jié)果強(qiáng)制轉(zhuǎn)換成整數(shù)。
那么我們什么時(shí)候會(huì)用到把結(jié)果強(qiáng)制轉(zhuǎn)換成整數(shù)的時(shí)候呢,當(dāng)我們想要的結(jié)果是數(shù)字的時(shí)候。例如年齡,工資,身高,體重等這些數(shù)字時(shí)。
例如:我們要對(duì)全班的同學(xué)按照身高進(jìn)行分組,這時(shí)我們就需要用到整數(shù)。
height=int(input('請(qǐng)問(wèn)你的身高是:')) if 0<height<=150: print('你被分到了1組') elif 150<height<=180: print('你被分到了2組') else: print('你被分到了3組) ----------------------------------- 請(qǐng)問(wèn)你的身高是:185 你被分到了3組
總結(jié)
到此這篇關(guān)于Python中input()函數(shù)用法的文章就介紹到這了,更多相關(guān)Python input()函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python2 中 unicode 和 str 之間的轉(zhuǎn)換及與python3 str 的區(qū)別
這篇文章主要介紹了python2 中 unicode 和 str 之間的轉(zhuǎn)換及與python3 str 的區(qū)別 本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07使用Python抓取豆瓣影評(píng)數(shù)據(jù)的方法
今天小編就為大家分享一篇關(guān)于使用Python抓取豆瓣影評(píng)數(shù)據(jù)的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10從0編寫(xiě)區(qū)塊鏈之用python解釋區(qū)塊鏈最基本原理
人工智能和區(qū)塊鏈誕生至今已經(jīng)有了十幾年,當(dāng)這些技術(shù)出現(xiàn)時(shí),人們都說(shuō)他們會(huì)改變世界,但至今為止,這兩項(xiàng)技術(shù)對(duì)現(xiàn)實(shí)的影響依然有限,接下來(lái)通過(guò)本文介紹下從0編寫(xiě)區(qū)塊鏈之用python解釋區(qū)塊鏈最基本原理,需要的朋友可以參考下2022-02-02使用Python+Flask開(kāi)發(fā)博客項(xiàng)目并實(shí)現(xiàn)內(nèi)網(wǎng)穿透
Flask是一個(gè)使用python編寫(xiě)的輕量級(jí)Web框架,這篇文章我們將使用這個(gè)框架編寫(xiě)一個(gè)屬于自己的博客網(wǎng)站!并教你如何通過(guò)使用內(nèi)網(wǎng)穿透工具處理項(xiàng)目,讓本地的項(xiàng)目可以在公網(wǎng)訪(fǎng)問(wèn),感興趣的可以了解一下2021-11-11python 時(shí)間 T 去掉 帶上ms 毫秒 時(shí)間格式的操作
這篇文章主要介紹了python 時(shí)間 T 去掉 帶上ms 毫秒 時(shí)間格式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽事件處理機(jī)制詳細(xì)介紹與實(shí)例解析
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽事件處理機(jī)制詳細(xì)介紹與實(shí)例解析,需要的朋友可以參考下2020-03-03Python3實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換成PDF文檔和圖片
pdfkit是把 HTML+CSS 格式的文件轉(zhuǎn)換成 PDF 的一種工具,它是 wkhtmltopdf 這個(gè)工具包的 python 封裝。本文將利用pdfkit實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換成PDF文檔和圖片效果,感興趣的可以學(xué)習(xí)一下2022-06-06PyGame實(shí)現(xiàn)初始化導(dǎo)入所有模塊方法詳解
pygame安裝是為了開(kāi)發(fā)小游戲,在下新手在經(jīng)過(guò)許多嘗試后,為大家避雷,給大家分享一個(gè)簡(jiǎn)單有效的方法,下面這篇文章主要給大家介紹了關(guān)于Python中Pygame的詳細(xì)安裝過(guò)程的相關(guān)資料,需要的朋友可以參考下2022-11-11