<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們編寫的大部分程式,都需要讀取輸入並對其進行處理,而基本的輸入操作是從鍵盤鍵入資料。Python從鍵盤鍵入資料,大多使用其內建的input()函數。但是,不同於程式設計初學者常接觸的C和C++,我們不需要在輸入之時規定變數的型別。相反,我們可以非常便捷的使用a = input()對任何資料型別的變數a進行賦值,無論是int,float還是列表等等。但是這並不代表Python將程式設計師的判斷資料型別工作完全省去了,如果這樣想,那麼在程式設計過程中很容易出現問題。我們知道,在對變數進行賦值時,Python會幫助判斷儲存資料的型別,不需要我們進行操作,但是input不是這樣。
首先,我們需要弄明白我們賦值的變數在python內部到底是以什麼形式存在的。下面我將展示一個程式片段
那麼我們可以看到,通過type()函數,我們看到無論我們輸入的值是int,float還是sring,最後input()函數返回的這個資料的型別均為string型。瞭解了這一點,將有利於我們更好的使用input()函數。因為在算術運算中,字串是沒法直接和int或float資料進行算術運算的,如果直接使用,那麼必然帶來TypeError報錯。
即使不報錯,我們使用兩個直接input()函數鍵入的資料進行計算,那麼很可能是在對兩個字串進行組合而不是算術運算
所以,當我們使用input()函數輸入的資料進行算術運算時,我們大多需要使用強制型別轉換來允許我們計算。得益於Python便捷的資料型別轉換,我們可以十分方便的轉換資料型別。
第一種是在鍵入時進行轉換,例如:a = int(input())。這樣賦值的資料儲存的形式從一開始就是我們轉換的資料型別,與C語言,C++等無異。
第二種則是在使用時進行轉換。這樣賦值的資料儲存的形式仍是input()返回的字串型別,僅僅在使用時轉換,會加大工作量,且有可能因為粗心帶來報錯,所以要謹慎使用。
在初見input()時,我發現了 variable = input(prompt)這個輸入格式,一下子驚如天人。覺得Python的input()函數的使用者互動真是友善,從此不再需要再像其他一些程式語言一樣單獨寫一個使用者提示語。以下面一個片段為例
可以看到,當我們敲擊Enter以後,螢幕上會顯示我們編寫的提示性語言,並等待使用者輸入。這樣給互動性程式編寫帶來了便利。
但是,我很快在使用variable = input(prompt)這個形式時遇到了問題,當我理所當然的把input(prompt)中的prompt當作print()函數使用時,我發現input()並不能將變數賦值返回給程式。也就是說,如果我們在input()的提示性語言中加入了變數,就很可能出錯,例如:
這個問題的原因是variable = input(prompt)是直接以字串形式輸出提示性的prompt語言,不能像print()函數一樣將值賦給變數並輸出。那麼這是不是意味著我們不能將變數加入其中呢?畢竟在很多回圈中,提示性的語言是需要根據迴圈次數改變的。
那麼實際上我們是可以加入的,解決方法就是上面講過的強制型別轉換,正因為我們已經知道input()以字串形式輸出,所以需要我們將變數轉化成string型!但是,需要注意的是,使用的符號是用於字串連線的“+”而不是分割字串和變數的“,”——這裡需要注意。
我們在程式設計的時候,常常需要一次性給多個變數賦值。在C語言和C++中,我們使用scanf("%d %d", &a,&b)這樣的方式進行輸入,其資料以空格為分界。那麼在python中我們該如何一次性輸入多個值呢?
(1):利用split()函數進行輸入,同時,我們不僅可以利用split()函數一次性輸入多個數,我們還可以設定分隔符,除了傳統的空格形式,也可以用逗號“,”這種更符合語言習慣的方式分隔輸入字元。其原理是因為input()輸入了一個字串,而split()函數能根據設定的分割點分割字串並返回分割後的字串列表,所以能實現一次性輸入多個資料值。範例如下:
但是,這樣輸入的值仍是字串型,我們在上面已經說過字串無法直接參與運算,最好輸入時進行型別轉換,那麼,按照我們第二點的方法轉換多輸入值可行嗎?
可以看到,這樣是不可以的,那麼為什麼上面單輸入可以而多輸入報錯呢?原因我們其實已經說過了,split()函數返回的是一個列表,spring當然能被轉換成int型,但是列表是沒法被這樣直接轉換的,所以我們需要用另一個函數map()來實現多輸入的強制型別轉換。
map()函數接受兩個接收兩個引數,一個是函數,一個是序列,map()將傳入的函數依次作用到序列的每個元素,並把結果作為新的list返回。我們將傳入的函數設定為強制型別轉換函數int,則split()函數返回的列表裡的每一個值都將被強制轉換型別,從而實現多輸入的型別轉換。範例如下:
choice=input('請選擇1或2') if choice=='1': print('正確') else: print('錯誤')
上面這段程式碼很簡單,僅有兩個選項,如果上面程式碼不是兩個,而是幾十個,幾百個,難道我們要一個一個打'1','2','3','4','5',.....'200','201'.....,這時我們要想辦法簡單一點,那就是把所有的資料的型別都轉換成整型,但是上面不是說了input()函數的返回都為string型別嗎?其實在某些特殊情況下是可以被強制轉換的,
choice=int(input('請選擇1或2')) if choice==1: print('正確') else: print('錯誤') ------------------------------ 請選擇1或2 1 正確
只要在input()函數前面加上int(),就可以把input()函數的結果強制轉換成整數。
那麼我們什麼時候會用到把結果強制轉換成整數的時候呢,當我們想要的結果是數位的時候。例如年齡,工資,身高,體重等這些數位時。
例如:我們要對全班的同學按照身高進行分組,這時我們就需要用到整數。
height=int(input('請問你的身高是:')) if 0<height<=150: print('你被分到了1組') elif 150<height<=180: print('你被分到了2組') else: print('你被分到了3組) ----------------------------------- 請問你的身高是:185 你被分到了3組
到此這篇關於Python中input()函數用法的文章就介紹到這了,更多相關Python input()函數用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45