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