【python系統學習05】input函數——實現人機交互


input函數

目錄

input用途

實現人機交互:

1、你提出問題打印在屏幕上,

2、運行程序的人再輸入回答。

3、按下回車,程序得到收集來的回答

4、之后,邏輯向下繼續運行。

我們寫的程可以實現根據他輸入的回答進行不同的邏輯走向。


語法

示例

result = input('你愛我嗎?請輸入:') 

if result == '不':
print('哼!你個大豬蹄子!')
else:
print('me too!!!'))
# 拿着搜集到的結果數據“result”的值來處理我們的程序,根據result的值不同,邏輯走向也就不同。

你提出的問題就是小括號“()”里邊的那段字符串。result接受的就是運行的人輸入的回答。運行的人按下回車,流程向下繼續走。

參數

是一句話,只要填寫你要詢問客戶的問題或你想輸入、表達出來的任何數據,都行。且任何數據類型的皆可。

比如下邊幾個不同參數的示例:

a、字符串類型的參數

result = input('你愛我嗎?請輸入:')
# 運行時會打印:你愛我嗎?請輸入:

b、數字類型 參數

result = input(520)
# 運行時會打印:520

c、布爾類型 參數

result = input(True)
# 運行時會打印:True

d、甚至復雜類型(日后要整理的列表)參數都可以!

result = input([1,2,3])
# 運行時會打印:[1,2,3]

返回值

1、正常情況下

返回的就是用戶輸入的內容。

BUT⚠️, input函數的返回值,一定是字符串格式的。

也就意味着result變量肯定是字符串類型的數據。

result = input('你愛我嗎?請輸入:')
print(type(result)) # <class 'str'>

控制台交流如下:

“你愛我嗎?請輸入:”

此時我輸入了123,還是純數字鍵盤輸入的123喔。

然后觀察print的result類型,發現是<class 'str'>,字符串格式。

2、非正常情況下
那么,我用戶不回答,直接回車跳過你這個問題呢?返回值是啥?看圖說話:

任性的用戶的操作
任性的用戶的操作

可以看到圖中最后一行打印的依舊是<class 'str'>,字符串格式。說明用戶不輸入,result接收的、或者說input返回的值是一個字符串形式的空串。

至於函數相關內容。我學過js接受起來很方便。可能零基礎看起來就不爽了。

什么是參數、什么是返回值。。。心里一千個草泥馬沸騰。

這個也按下不表,日后詳談。

但是說回正題。我們平時寫邏輯,得把用戶輸入的可能性都考慮進去。也就是result如果不符合我們期望的情況,都考慮進去。

比如我上例中,result只要不是“不”字,就都走到else的情況了。


返回值數據類型轉換

上邊強調了好幾遍,input函數賦值給變量后,變量肯定是字符串格式。

馬上要過年了,過年肯定要見你的七大姑八大姨吧!

那么假如我們對input有以下使用場景呢:


age = input('石頭,你今年多大啦!')
if age > 24:
  marryBu = input('哎呀!那你有對象了嗎?打算啥時候結婚啊!')
elif age < 24:
  whereWork = input('工作啦!那你年薪多少啊現在!')
else:
  print('哎吆,24不小了!我兒子24歲那年,他兒子都出生啦!')
print('允許這里有個白眼!🙄️')

好,那我們來分析這段程序。

運行你就會發現,這段程序肯定會報錯。

報錯啦!
報錯啦!

TypeError的錯誤,具體錯誤分析就去這里看,不贅述。

但是簡而言之呢,就是說咱們截圖中輸入的 12 ,他是個字符串。

而到了下邊if、else里,age和數字24來做判斷。

python作為強類型語言對這樣寫法是零容忍的,所以就報錯了。

說了這么多廢話呢,就一句話概括: 針對input的返回值使用時,注意進行類型轉換。 需要把字符串轉換成你需要的其他類型再進行if判斷。

上述代碼改進如下:

age = input('石頭,你今年多大啦!')
if int(age) > 24: 
  marryBu = input('哎呀!那你有對象了嗎?打算啥時候結婚啊!')
elif int(age) < 24:
  whereWork = input('工作啦!那你年薪多少啊現在!')
else:
  print('哎吆,24不小了!我兒子24歲那年,他兒子都出生啦!')
print('允許這里有個白眼!🙄️')

最后放一下運行成功的圖。(偷偷告訴你,主要是因為我喜歡那個白眼。)

白眼
白眼

從根源上改進的寫法如下:

# age = input('石頭,你今年多大啦!')
age = int(input('石頭,你今年多大啦!'))
if age > 24: 
  marryBu = input('哎呀!那你有對象了嗎?打算啥時候結婚啊!')
elif age < 24:
  whereWork = input('工作啦!那你年薪多少啊現在!')
else:
  print('哎吆,24不小了!我兒子24歲那年,他兒子都出生啦!')
print('允許這里有個白眼!🙄️')

容錯處理

⚠️ 接上文。

int()強制類型轉換的同時,你得確保用戶輸入的是可以用int轉換的數據——即整數。如果他輸入浮點數、布爾值、中英文字符串等,咱們上邊寫法的程序可能就掛了。

所以還是那句話,涉及到和用戶打交道的時候,你必須得做容錯處理。即你得把所有可能性都想到,因為你不能保證用戶輸入啥!

我覺得這也是前端苦逼的地方之一吧。❤️


動手吧

說了這么多,你也來寫一寫吧!

實現效果:

1、【簡單】讓用戶輸入自己的名字,然后打印出來“hello!用戶的名字”

需要用到inputprint變量賦值

2、【困難】匯率計算器:讓用戶輸入要兌換的幣種,再輸入目標幣種。輸入用戶的金額。輸出轉換后的結果。(文字描述枯燥,效果可百度“匯率計算”,看搜索結果的第一條在線小工具。體驗過后用python實現)

需要用到inputif語句類型轉換print變量賦值算術運算符及表達式等前邊鋪設過的知識點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM