- Python完全自學教程
- 明日科技編著
- 2078字
- 2023-10-09 15:50:38
1.5 輸入函數input()
在Python中,使用內置函數input()可以接收用戶用鍵盤輸入的信息。input()函數的基本用法如下。
variable = input("提示文字")
其中,variable為保存輸入結果的變量,雙引號內的提示文字表示用于提示要輸入的內容。例如,想要接收用戶輸入的內容,并保存到變量tip中,可以使用下面的代碼實現。
tip = input("請輸入文字:")
在Python 3.x中,無論輸入的是數字還是字符,都將被當作字符串讀取。如果想要接收數值,需要把接收到的字符串進行類型轉換。例如,想要接收整型的數字并保存到變量num中,可以使用下面的代碼。
num = int(input("請輸入您的幸運數字:"))
想要獲得字符對應的ASCII值該如何實現呢?通過ord()函數可以將字符的ASCII值轉換為數字。下面的代碼用于實現根據輸入字符,輸出相應的ASCII值。
name=input("輸入字符:") # 輸入字母或數字,不能輸入漢字 print(name+" 的ASCII值為:",ord(name)) # 顯示字符對應的ASCII值
如輸入字符“A”,則結果輸出為“A的ASCII值為65”;輸入數字5,則結果輸出為“5的ASCII值為53”。
示例 根據輸入的年份,計算年齡大小。
實現根據輸入的年份(4位數字,如1981),計算目前的年齡。程序中使用input()函數輸入年份,使用datetime模塊獲取當前年份,然后用當前年份減去輸入的年份,就是計算的年齡,代碼如下。
import datetime # 調入時間模塊 imyear = input("請輸入您的出生年份:") # 輸入的出生年份必須是4位數字的,如1981 nowyear= datetime.datetime.now().year # 計算當前年份 age = nowyear- int(imyear) # 用于計算實際年齡 print("您的年齡為:"+str(age ) +"歲") # 輸出年齡 # 根據計算的年齡判斷所處的年齡階段 if age<18: # 如果年齡小于18歲 print("您現在為未成年人 ~@_@~") # 輸出為“您現在為未成年人 ~@_@~” if age>=18 and age<66: # 如果18≤age<66 print("您現在為青年人 (-_-)") # 輸出為“您現在為青年人 (-_-)” if age>=66 and age<80: # 如果66≤age<80 print("您現在為中年人~@_@~") # 輸出為“您現在為中年人~@_@~” if age>=80: # 如果age≥80 print("您現在為老年人 *-_-* ") # 輸出為“您現在為老年人*-_-*”
運行程序,會提示輸入出生年份,如圖1.17所示。輸入出生年份,出生年份必須是4位數字,如1981。
輸入出生年份,如輸入2007,按<Enter>鍵,運行結果如圖1.18所示。
圖1.17 提示輸入出生年份
圖1.18 根據輸入的年份計算年齡
1.5.1 常用輸入
使用input()輸入信息時,提示信息參數可以為空(不提示任何信息),也可以和轉義字符結合(如在提示信息后加\n,表示在提示信息后換行)。常見應用代碼如下。
name = input("") # 無提示型輸入,不換行 name1 = input("name:") # 簡潔型輸入,不換行 name2 = input("請輸入您的姓名:") # 提示型輸入,不換行 name3 = input("姓名:\n") # 提示型輸入,換行
運行結果如下。
張三豐 name:李鐵 請輸入您的姓名:理想 姓名: 李世民
1.5.2 去除輸入的非法字符
輸入數據時,可能會輸入空格等非法字符,這時可以使用字符串的strip()、lstrip()或rstrip()等方法去除輸入的非法字符。例如下面的代碼。
name = input("請輸入您的姓名:").strip(' ') # 去除輸入數據兩端的空格 age = input("請輸入您的年齡:").lstrip(' ') # 去除輸入數據左側的空格 print(name) print(age)
運行結果如下。
請輸入您的姓名: joy 請輸入您的年齡: 12 joy 12
1.5.3 多數據輸入
input()函數支持多個數據的輸入,輸入的時候通常使用字符串的split()方法進行分割,如同時輸入某一地點的坐標值等。示例代碼如下。
# 一行輸入兩個不限定類型的值 x,y=input("請輸入出發地點的橫、縱坐標值,用英文逗號分隔:").split(',') name,age,height=input('請輸入你的姓名、年齡和身高,用英文逗號分隔:\n').split(',') # 一行輸入兩個限定類型為整型的值 a,b=map(int,input('請輸入兩個數,用空格分隔:\n').split()) print(x,y) print(age) print(a,b)
運行結果如下。
請輸入出發地點的橫、縱坐標值,用英文逗號分隔:123,210 請輸入你的姓名、年齡和身高,用英文逗號分隔: joy,22,1.68 請輸入兩個數,用空格分隔: 27 89 123 210 22 27 89
說明
如果不按指定規則輸入,將輸出“ValueError: not enough values to unpack”異常。
通過循環語句也可以實現多個數據的輸入,也需要使用字符串的split()方法對輸入的數據進行分割。代碼如下。
sum = 0 for x in input('請輸入多個加數,中間用空格分隔:').split(' '): sum = sum+int(x) print(sum)
運行結果如下。
請輸入多個加數,中間用空格分隔: 1 2 3 4 5 6 7 8 36
1.5.4 強制轉換輸入
用戶通過input()函數輸入的數據都是字符串類型的,有時程序要求輸入的數據為某種特定數據類型,如整型、浮點型或日期型等,這時就需要在輸入后進行強制轉換。例如,使用int()函數將用戶輸入的字符串類型的數據轉換為整型數據。代碼如下。
age = int(input('age:')) print(age) print(type(age))
運行結果如下。
age:30 30 <class 'int'>
有時對輸入的數據是有一定要求的,如首字母大寫、全部為小寫等,這時可以使用字符串的lower()、upper()、capitalize()或title()等方法對輸入的數據進行強制轉換。代碼如下。
password = input('請輸入您的密碼:').upper() # 將輸入的數據轉換為全部大寫 name = input('請輸入您的姓名:').capitalize() # 將輸入的數據轉換為首字母大寫 school = input('請輸入您的學校:').title() # 將輸入的數據全部轉換為首字母大寫 print(password,name,school) # 輸出以上轉換后的內容
運行結果如下。
請輸入您的密碼:abcdefg 請輸入您的姓名:joy 請輸入您的學校:harvard university ABCDEFG Joy Harvard University
1.5.5 對輸入數據進行驗證
Python提供了一些對輸入數據進行驗證的方法,通過這些方法可以非常方便地判斷輸入內容是大寫字母、小寫字母、數字或空白字符等。主要方法如下。
isalnum():用于驗證所有字符都是數字或者字母。
isalnum():用于驗證所有字符都是字母。
isdigit():用于驗證所有字符都是數字。
islower():用于驗證所有數據都是小寫。
isupper():用于驗證所有數據都是大寫。
istitle():用于驗證所有數據都是首字母大寫,類似標題。
isspace():用于驗證所有數據都是空白字符,如\t、\n、\r。
使用字符串的isdigit()方法可以驗證輸入數據是否為數字。例如,需要輸入純數字方可進入系統,否則將退出系統,代碼如下。
if input('請輸入數字驗證碼:').isdigit(): print('正在登錄草根之家商務系統!') else: print('輸入非法,將退出系統!')
輸入純數字的運行結果如下。
請輸入數字驗證碼:1314 正在登錄草根之家商務系統!
輸入非純數字的運行結果如下。
請輸入數字驗證碼:q1e2 輸入非法,將退出系統!