22.python 內置函數input/eval
- 2020 年 3 月 12 日
- 筆記
22.python 內置函數input/eval
最後更新於:2019-10-27 09:28:54
python的內置函數其實挺多的,其中input和eval算得上比較特殊,input屬於互動式內置函數,eval函數能直接執行字元串表達式並返回表達式的值.
一.input函數
input是Python的內置函數也是互動式函數,何為互動式函數?互動式程式是指程式可以接用戶交互。
可能以前的程式碼,部分童鞋可能會覺得有些死板,變數聲明和定義都已經提前準備好了,可能老司機會說你不運行程式我也知道輸出的結果是什麼。
input()函數能接收用戶輸入的內容,並返回字元串str類型,示例程式碼如下:
Python
while True: a = input("請輸入:") print("輸入的內容是:{} 類型是:{}".format(a,type(a)))
123 |
while True: a = input("請輸入:") print("輸入的內容是:{} 類型是:{}".format(a,type(a))) |
---|
大家現在都知道AI已經是大勢所趨,未來的十年屬於AI,那麼今天我要告訴你價值一個億的AI核心程式碼:(沙雕機器人1.0版本)
Python
while True: ''' replace("?","!") 將字元串中英文狀態下的問號 ?替換為 感嘆號 ! replace("?","!")將字元串中中文狀態下的問號 ?替換為 感嘆號 ! replace("嗎","") 將字元串中的中文 "嗎" 替換為 "" ''' print(input("").replace("?","!").replace("?","!").replace("嗎",""))
1234567 |
while True: ''' replace("?","!") 將字元串中英文狀態下的問號 ?替換為 感嘆號 ! replace("?","!")將字元串中中文狀態下的問號 ?替換為 感嘆號 ! replace("嗎","") 將字元串中的中文 "嗎" 替換為 "" ''' print(input("").replace("?","!").replace("?","!").replace("嗎","")) |
---|
測試結果:
Python
在嗎? 在! 你好 你好 是python教程嗎? 是python教程! 看完教程就能學會編程嗎? 看完教程就能學會編程! python能生孩子嗎 python能生孩子
12345678910 |
在嗎?在!你好你好是python教程嗎?是python教程!看完教程就能學會編程嗎?看完教程就能學會編程!python能生孩子嗎python能生孩子 |
---|
二.eval函數
在以前的文章中我們也曾經使用過eval,將字元串轉為eval 。內置函數eval()除了這個功能還能直接執行字元串表達式,並返回表達式的結果,示例程式碼如下:
Python
a = eval("3+2.5") print("a={} ,a的類型是{}".format(a,type(a))) a = eval("3+2") print("a={} ,a的類型是{}".format(a,type(a))) b = 33 a = eval("b/2") print("a={} ,a的類型是{}".format(a,type(a)))
123456789 |
a = eval("3+2.5")print("a={} ,a的類型是{}".format(a,type(a))) a = eval("3+2")print("a={} ,a的類型是{}".format(a,type(a))) b = 33a = eval("b/2")print("a={} ,a的類型是{}".format(a,type(a))) |
---|
輸出結果:
Python
a=5.5 ,a的類型是<class 'float'> a=5 ,a的類型是<class 'int'> a=16.5 ,a的類型是<class 'float'>
123 |
a=5.5 ,a的類型是<class 'float'>a=5 ,a的類型是<class 'int'>a=16.5 ,a的類型是<class 'float'> |
---|
三.input函數和eval函數配合使用
input函數和eval函數配合使用完成一個無介面的計算器:
Python
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個人部落格地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com @File:python_input_eval.py @Time:2019/10/6 21:48 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! """ while True: result = eval(input("請輸入表達式:")) print("結果:",result)
1234567891011121314151617 |
# !usr/bin/env python# -*- coding:utf-8 _*-"""@Author:何以解憂@Blog(個人部落格地址): shuopython.com@WeChat Official Account(微信公眾號):猿說python@Github:www.github.com @File:python_input_eval.py@Time:2019/10/6 21:48 @Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!""" while True: result = eval(input("請輸入表達式:")) print("結果:",result) |
---|
輸出結果:
Python
請輸入表達式:3+2-6 結果: -1 請輸入表達式:55*25 結果: 1375 請輸入表達式:89/7 結果: 12.714285714285714 請輸入表達式:
1234567 |
請輸入表達式:3+2-6結果: -1請輸入表達式:55*25結果: 1375請輸入表達式:89/7結果: 12.714285714285714請輸入表達式: |
---|
四.重點總結
1.注意input函數的返回值是字元串str類型,如果需要int或者list類型可以通過轉換完成
2.eval是一個很強大的內置函數,除了以上功能,eval還能直接刪除系統文件,這裡不做過多講解,注意eval不要濫用。