官术网_书友最值得收藏!

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:                        # 如果18age<66
     print("您現在為青年人 (-_-)")              # 輸出為“您現在為青年人 (-_-)”
if age>=66 and age<80:                        # 如果66age<80
     print("您現在為中年人~@_@~")               # 輸出為“您現在為中年人~@_@~”
if age>=80:                                   # 如果age80
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
輸入非法,將退出系統!
主站蜘蛛池模板: 澜沧| 伽师县| 漯河市| 定西市| 临武县| 金溪县| 太白县| 新巴尔虎右旗| 岳西县| 中宁县| 武邑县| 永丰县| 海口市| 贵南县| 涞源县| 郎溪县| 乌什县| 长兴县| 项城市| 红安县| 衡阳县| 嵊州市| 汽车| 迭部县| 潞西市| 眉山市| 宁津县| 宝清县| 肃宁县| 清涧县| 三穗县| 乐清市| 孝义市| 达拉特旗| 秀山| 全州县| 如皋市| 炉霍县| 闸北区| 会宁县| 揭西县|