Python完全自学教程
上QQ阅读APP看书,第一时间看更新

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
输入非法,将退出系统!