自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
语法参考
input()函数可以提示并接收用户的输入,将所有的输入按照字符串进行处理,并返回一个字符串,input()函数的基本用法如下:
input([prompt])
参数说明:
prompt:可选参数,表示提示信息。
示例:接收用户输入的内容,并保存到变量中,代码如下:
name = input("Please enter your name:") #提示请输入你的名字
print(name) #输出名字
输入Tom后,程序的运行结果为:
Please enter your name:Tom
Tom
示例:使用input()函数提示输入内容,将《静夜思》中的诗句保存到列表中并输出,代码如下:
# 输入《静夜思》中的诗句
a=input("输入第一句:") # 提示输入内容
b=input("输入第二句:")
c=input("输入第三句:")
d=input("输入第四句:")
list=[a,b,c,d] # 将内容存入列表
print(list) # 输出列表内容
依次输入:床前明月光、疑是地上霜、举头望明月、低头思故乡,程序的运行结果如下:
输入第一句:床前明月光
输入第二句:疑是地上霜
输入第三句:举着放明月
输入第四句:低头思故乡
['床前明月光', '疑是地上霜', '举着放明月', '低头思故乡']
在Python 3.x中,无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数值,需要把接收到的字符串进行类型转换。
示例:使用input()函数提示输入内容,将输入的成绩转换为整型保存到列表中并输出,代码如下:
# 提示输入数学、英语、语文成绩
score1 = int(input("请输入数学成绩:")) # 转换为整型
score2 = int(input("请输入英语成绩:"))
score3 = int(input("请输入语文成绩:"))
list = [score1,score2,score3] # 将变量内容存入列表
print(list) # 输出列表内容
依次输入:88、76、100,程序的运行结果如下。
请输入数学成绩:88
请输入英语成绩:76
请输入语文成绩:100
[88, 76, 100]
提示:input()函数返回的值是字符串类型的,如果要让输入的数字变为整型,可以使用int()函数将数字或字符串转换为整数。
示例:实现根据输入的字符,利用ord()函数将字符转换为对应的ASCII数值,代码如下:
n =input("输入一个字符:") # 输入字母或数字,不能输入汉字
value=ord(n) # 用ord()函数将字符转换为对应的ASCII数值
print(n + "的ASCII码为:", value) # 显示字符对应的ASCII码值
输入A,程序的运行结果如下:
输入一个字符:A
A的ASCII码为: 65
快用锦囊
锦囊01 常用输入
使用input()输入信息时,提示信息参数可以为空(不提示任何信息),也可以和转义字符结合(如提示信息后加“\n”,表示在提示信息后换行)。常见应用代码如下:
name = input("") # 无提示型输入,不换行
name1 = input("name:") # 简洁型输入
name2 = input("请输入您的姓名:") # 提示型输入,不换行
name3 = input("姓名:\n") # 提示型输入,换行
输出结果为:
张三丰
name:李铁
请输入您的姓名:理想
姓名:
李世民
也可以将多条输入语句放到列表、元组或字典中。例如,放到列表中,将实现把输入结果保存到列表中,代码如下:
data=[input('姓名:'),input('电话:'),input('学校:')]
print(data )
输出结果为:
姓名:张三丰
电话:1868688110
学校:清华大学
['张三丰', '1868688110', '清华大学']
锦囊02 去除输入的非法字符
输入数据时,有时可能会输入空格等非法字符,这时可以使用字符串的strip()、lstrip()或rstrip()方法去除。例如下面的代码:
name =input("请输入您的姓名:").strip(' ') # 去除输入数据两端的空格
age =input("请输入您的年龄:").lstrip(' ') # 去除输入数据左侧的空格
print(name)
print(age)
输出结果为:
请输入您的姓名: joy
请输入您的年龄: 12
锦囊03 多数据输入
input()函数支持多个数据输入,输入的时候通常使用字符串的split()方法进行分割,如同时输入某一地点的坐标值等。示例代码如下:
x,y=input("请输入出发地点的横、纵坐标值,用英文逗号分隔:").split(',') # 一行输入两个不限定类型的值
name,age,height=input('请输入你的姓名、年龄和身高,用英文逗号分隔:\n').split(',')
a,b=map(int,input('请输入两个数,用空格分隔:\n').split()) # 一行输入两个限定类型为int的值
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
锦囊04 强制转换输入
用户通过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
锦囊05 对输入数据进行验证
在Python中,提供了一些对字符串进行验证的方法,通过它们可以非常方便地判断输入内容是大写字母、小写字母、数字或是空白字符等。主要方法如下:
l isalnum():所有字符都是数字或者字母;
l isalnum():所有字符都是字母;
l isdigit():所有字符都是数字;
l islower():所有字符都是小写;
l isupper():所有字符都是大写;
l istitle():所有单词都是首字母大写,类似标题;
l isspace():所有字符都是空白字符、\t、\n、\r。
使用字符串的isdigit()方法可以验证输入是否为数字。例如,需要输入为纯数字方可进入系统,否则退出系统,代码如下:
if input('请输入数字验证码:').isdigit():
print('正在登录草根之家商务系统!')
else:
print('输入非法,将退出系统!')
输出纯数字的运行结果如下:
请输入数字验证码:1314
正在登录草根之家商务系统!
输出非纯数字的运行结果如下:
请输入数字验证码:q1e2
输入非法,将退出系统!
为了有效验证输入的各种情况,如输入是否为空,输入是否为指定长度字符等,可以自定义验证函数inputbox(),在该函数中使用isdigit()、isalpha()等函数对可能出现的各种情况进行验证判断,并且将符合条件的输入内容返回。inputbox()的代码如下:
def inputbox(showstr, showorder, lengh = 0):
'''
功能:输入并验证数据,返回符合条件的数据
:param showstr: 提示信息
:param showorder:验证模式,值为1表示不为零的纯数字;值为2表示3个字母;值为3表示指定个数的数字
:param lengh:输入字符个数,默认值为0
:return: 符合条件的数据
'''
instr = input(showstr)
if len(instr) != 0:
if showorder == 1: # 判断是否为纯数字
if str.isdigit(instr):
if instr == 0:
print("\033[1;31;40m 输入为零,请重新输入!!\033[0m")
return "0"
else:
return instr
else:
print("\033[1;31;40m输入非法,请重新输入!!\033[0m")
return "0"
if showorder == 2: # 判断是否为3个字母
if str.isalpha(instr):
if len(instr) != 3:
print("\033[1;31;40m必须输入三个字母,请重新输入!!\033[0m")
return "0"
else:
return instr
else:
print("\033[1;31;40m输入非法,请重新输入!!\033[0m")
return "0"
if showorder == 3: # 判断是否为指定个数的数字
if str.isdigit(instr):
if len(instr) != lengh:
print("\033[1;31;40m必须输入" + lengh + "个数字,请重新输入!!\033[0m")
return "0"
else:
return instr
else:
print("\033[1;31;40m输入非法,请重新输入!!\033[0m")
return "0"
else:
print("\033[1;31;40m输入为空,请重新输入!!\033[0m")
return "0"
例如,需要输入3个字母时,可以使用下面的代码。
print(inputbox('请输入3个字母',2))
当输入的内容为123时,将显示如图1所示的运行结果。
图1 输入错误内容时的效果
当输入的内容为abc时,将显示如图2所示的运行结果。
图2 输入正确内容时的效果
说明:本实例的代码需要在PyCharm中运行。
通过字符串的一些方法,可以很方便地进行验证,但灵活度不够。使用字符的ASCII码进行数据验证,方便、灵活,而且高效。如对输入进行数字验证,要求输入5位数字,并且只允许输入数字1~8(注意:验证时没有考虑密码是否一致),代码如下:
instr=input('请输入5位数字验证码:').strip(' ')
isgo='go'
if len(instr)!= 5:
print('输入非5位数字,请重新输入!')
isgo = 'no'
else:
for i in instr:
if ord(i) not in range(ord('1'),ord('9')):
print('输入了非有效数字字符,请重新输入!')
isgo = 'no'
break
if isgo =='go':
print('正在登录站长之家系统!')
输出效果如图3、图4、图5所示。
图3 输入正确的数字
图4 输入位数不够的效果
图5 输入含非有效的数字字符
注册用户时,如果要求输入的用户名为所有字母、数字和符号,除了@、\、/、#4个特殊符号,该如何验证呢?字母、数字和符号的ASCII码值范围(十进制)是33到126,需要去除的特殊字符@、\、/、#的ASCII码值为64、47、92、35。编写代码如下:
instr=input('注册用户名:').strip(' ')
isgo='go'
for i in instr:
if ord(i) in range(33,127):
if ord(i) in [64,47,92,35]:
print('输入了非法字符 ', i, ' 请重新输入!')
isgo = 'no'
break
else:
print('输入了非法字符,请重新输入!')
isgo = 'no'
break
if isgo =='go':
print('用户名注册完成,请继续填写其他注册信息!')
程序运行后,输入注册用户名,如mingrisoft001,并按下〈Enter〉键,将提示“用户注册完成,请继续填写其他注册信息”,运行效果如图6所示;输入“mingri#”,因为包含了非法字符“#”,则提示“输入了非法字符 # 请重新输入!”,运行效果如图7所示。
图6 输入正确的字符
图7 输入非法字符的效果
应用场景
场景一:对输入的用户名和密码进行验证
对输入的用户名和密码进行验证,假设用户的用户名为“joe”,密码为“123456”。如果用户输入正确,则提示用户“稍后,正在进入账户!”;如果输入用户和u,则提示用户“用户名或密码输入错误,请重新输入!”,让用户重新输入;如果用户名和密码输入错误超过三次,则提示“用户或密码输入错误超过三个,将退出程序!”,然后退出程序。实现代码如下:
for i in range(0,3):
user = input('请输入用户名:')
if user == 'joe':
password = input('请输入密码:')
if password == '123456':
print('稍后,正在进入账户!',end = '')
break
else:
print('密码输入错误,请重新输入!!')
else:
print('用户名输入错误,请重新输入!!')
if user=='joe'and password == '123456':
print('稍后,正在进入账户!',end = '')
else:
print('用户或密码输入错误超过三个,将退出程序!!')
运行程序,输出效果如图8,图9,图10所示。
场景二:输入三角形的三边长来判断是怎样的三角形
如果要一次转换多个输入数据的值,可以使用map()函数。map()函数可以接收一个函数和列表,并通过函数依次作用到列表的每个元素,返回一个新的列表。本例输入三角形三个边的边长要一次输入,需要使用map()、input()和int()函数。具体用法为:a,b,c=map(int,input().split(' ')),split()函数通过空格分解字符串为列表,int()函数将分解的字符串转换为数字,实现代码如下:
a, b, c = map(int, input("请输入三角形的三条边长,用空格间隔:").split()) # 分解输入的边长
if a > 0 and b > 0 and c > 0: # 判断输入的边长是否大于0
if a + b > c and b + c > a and a + c > b: # 判断输入的边长是否构成三角形
ans = "可以构成三角形"
if a == b and b == c and a == c: # 判断是否构成等边三角形
ans = "可以构成等边三角形"
else:
if a == b or b == c or a == c: # 判断是否构成等腰三角形
ans = "可以构成等腰三角形"
# 判断是否构成等腰直角三角形
if a ** 2 == b ** 2 + c ** 2 or b ** 2 == a ** 2 + c ** 2 or c ** 2 == a ** 2 + b ** 2:
ans = "可以构成等腰直角三角形"
else:
ans = "不能构成三角形"
else:
ans = "边长必须大于0!!"
print(ans)
运行程序,如果输入3 4 5,则输出结果如下。
请输入三角形的三条边长,用空格间隔:3 4 5
可以构成等腰直角三角形
运行程序,如果输入10 10 10,则输出结果如下。
请输入三角形的三条边长,用空格间隔:10 10 10
可以构成等边三角形
场景三:通过键盘控制DOS下主程序菜单的选择
在DOS或命令提示符下运行的程序主功能菜单,通常是通过菜单列表前面的数字进行程序功能选择的。是否可以通过键盘的上下键进行选择呢?当然是可以的,通过正则表达式对输入的数字或者移动的方向键进行判断,就可以通过数字键和方向键对菜单的选择。代码如下:
import re
print('''
Microsoft MS-DOS 10 Startup Menu
=============================================
1.ghost 11.2
2.ghost 8.3
3.DOS TOOLS
4.PGMAGIC
5.DOS
0.退出系统
=============================================
说明:通过数字键或者↑↓方向键选择菜单
''')
option_str = input('请通过数字键或者↑↓方向键选择功能:')
option = re.sub(r'\D','',option_str)
if int(option) == 1: # 选择数字键1执行的菜单
print('将运行ghost 11.2系统')
if int(option) == 2: # 选择数字键2执行的菜单
print('将运行ghost 8.3系统')
if int(option) == 3: # 选择数字键3执行的菜单
print('将运行DOS 工具箱')
if int(option) == 4: # 选择数字键4执行的菜单
print('将运行系统魔法设置')
if int(option) == 5: # 选择数字键5执行的菜单
print('将进入DOS系统')
if int(option) == 0: # 选择数字键0,退出系统
print('将退出系统')
程序的运行结果如图11所示。
图11 运行结果
说明:本程序如果想通过方向键选择菜单,需要在命令行窗口或者IDLE下运行。