输入输出&格式化
一、input输入函数
input函数:获取用户输入,保存成一个字符串。哪怕你输入的是个数字1,返回给你的只会是个字符串"1",而不是整数1,例如;
inp = input("please input your name") # 输入操作 print(inp) print(type(inp)) # 查看数据类型,str类型 inp = input("pleas input your age") print(inp) print(type(inp)) # 查看数据类型,str类型 inp = input("请输入一个字符:") print(type(inp)) inp = input("请输入一个字符: ") print(inp)
第一个例子:inp = input("please input your name") input函数里可以提供一个字符串,用来给用户进行输入提示的。input函数的返回值赋值给inp这个变量后,inp里就保存了用户输入的值。
type是Python内置函数之一,非常有用,用于查看对象的数据类型,例子中的inp是一个str类型,这验证了保存成一个字符串类型。
第二个例子:当输入的时候我们输入数字类型,但是使用type查看类型的时候,显示的是str类型。
第三个例子:什么也不输入只是一个空的时候,显示的也是一个str类型。
第四了例子:什么也没输入直接敲回车,结果还是str类型。
从上面例子中的展示,不难发现,input函数将我们输入原样不动的返回给我们,并包装成一个字符串,这肯定是不行的,通常需要对用户输入的进行处理和判断。
1.对空格输入进行处理
inp = input("please input your name: ") if inp == "": # 如果是空格则执行 print("不能输入空格,请重新输入")
2.将字符串转换为数字类型
age = input("Please input your age:") age = int(age) # 转换为数字 if age > 18: print("adult") else: print("Not an adult")
3.去除空格
lstrip:去除开头空白
rstrip:去除结尾空白
strip:去除两端的空白
inp = input("please input your name:") inp = inp.strip() # lstrip 和 rstrip 使用一样的 print(inp)
4.判断输入的字符类型
前面我们将字符串转换为整数用的是int()函数,这种方式有危险的。比如;
a = "123" a = int(a) print(type(a)) # 转换数字类型 b = "Jerry" b = int(b) print(b) # 报错信息 ValueError: invalid literal for int() with base 10: 'Jerry'
对于"123"的字符串转换时没问题的,但是对于包含字符、特殊字符的字符串就没有办法转换了,就是弹出异常。所以在使用int函数之前,要先判断输入的是否是全是数字。比如;
age = input("please input your age: ") if age.isdigit(): # 使用isdigit()函数判断输入的是否全是数字 age = int(age) print("Your age is ", age) else: print("lllegal input !!!")
5.阻塞或暂停程序
print("1") input("请按回车继续......") # 阻塞 print("2")
input函数不会将输入保存下来,只是暂停程序动作。
二、print输入函数
print在Python3.x是一个函数,在Python2.x是一个关键字。
print函数已经不陌生了,用了这么久多少有点经验了,明白他的用法。
print函数用于将内容格式化显示在标准输出上,主要指的是屏幕显示器。
print可以接受多个字符串,字符串类型的变量或者print的最想。每个字符串用逗号 “ , ”隔开,连成一串输出,print会一次打印每个字符串,同时每遇到一个逗号就输出一个空格。
a = "name" b = "please input" print(b, "your", a) # 打印结果:please input your name 自动以空格分隔 print(b + "your" + a) # please inputyourname 没有分隔
对于 print(b + "your" + a)的语句,其实是先计算b + "your" + a的值,然后在通过print打印他,print()会自动执行内部的语句。比如;
a = 10 b = 3 print(sum((a, a * b))) # 先求出a*b的乘积,在加上a的值 # 结果为 40
参数
我们看一下print函数的原型:print(self, *args, sep=' ', end='\n', file=None)
sep参数:分隔的符号,默认是一个空格
end参数:打印后的结束方式,默认为换行符\n.如果,设置end="",则不换行,让print在一行内连续打印。
a = "your" b = "name" print(a, "1", b, sep=" ") # 分隔 print(a, "1", b, end="x") # 结尾追加x字符
三、print格式化输出
在Python2.6以后,有两种格式化输出的方法。
一种是类似C语言中printf%百分号格式化输出,也是Python最基础最常用的格式化输出方法。另一种就是str.format()的方式。
1. % 百分号格式化输出
print("我叫 %s 今年 %d 岁。" % ("小黑", 31)) # 结果为: # 我叫 小黑 今年 31 岁。
首先构造一个字符串 "我叫 %s 今年 %s 岁。" ,将其中需要用别的变量或值替代的部分,用 % 百分符号加上一个数据类型代号,比如%s、%d来代替,然后在字符串的后面用%加一个同样的数量的变量或值得元组。
也就是前面有多少个%符号,后面就要提供多少个参数值,每个参数值之间用逗号隔开,所有的参数用圆括号括起来,每个参数前面的% 要一一对应,并且数据类型也要能够合法对应。
格式化符号
格式化操作辅助命令
经典例子:
s = "i am %s." % "jack" s = "i am %s age %d" % ("jack", 20) s = "percent %.2f" % 99.974154 s = "i am %(name)s age %(age)d" % {"name": "jack", "age": 20} s = "i am %(k1).2f" % {"k1": 1212.121212} s = "i am %.2f %% " % 1212.121212 print(s)
需要说明的是,如果你想在Print中打印一个%百分号本身,那么需要使用 %% 两个百分号转义一个百分号。
如果你对print复杂的格式控制无爱,对美观没有要求,那么傻瓜式的一路用%s占位符,可以省事。
print("%s %s %s %s %s" % (a, b, c, d, e))
2.str.format()格式化输出
这种格式化方法是2.6以后出现的,新增了一种格式化字符串的函数 str.format(),他增强了字符串格式化的功能。
基本语法是通过 { } 和 : 来代替以前的 %。
format函数可以接受不限个参数,位置可以不按顺序。