摘要: 本文主要是记录自己在学习python
过程中使用到的input
与ptrint
函数。
1.函数说明
python 1 2 3 4 5 6 def input (prompt: Any =... )''' Read a string from standard input . The trailing newline is stripped .The prompt string, if given, is printed to standard output without a trailing newline before reading input. If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. On *nix systems, readline is used if available. '''
函数接受一个标准输入数据,返回为 string 类型。
函数的参数可选,如果填写,则在接收字符串的时候会打印提示。
回车标志着输入结束,但是回车不会被输入到接收数据的变量中
函数使用格式
python
2.函数使用 2.1 数据输入 python 1 2 3 4 data = input () print (data) print (type (data)) print (len (data))
2.2 带提示的数据输入 python 1 2 3 4 data = input ("Please enter your data:" ) print (data) print (type (data)) print (len (data))
# 二.`print()`函数
1.函数说明
python 1 2 3 4 5 6 7 8 def print (*values: object , sep: Optional [Text]=..., end: Optional [Text]=..., file: Optional [_Writer]=..., flush: bool =... )''' Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream. '''
2.函数使用 2.1 多种变量类型输出 python 1 2 3 4 5 6 7 8 9 10 11 12 data1 = "hello word!" print (data1)data2 = 999 print (data2)data3 = 3.14 print (data3)data4 = (1 , 2 , 3 ) print (data4)data5 = ["a" , "b" , "c" ] print (data5)data6 = {"key1" : 123 , "key2" : "abc" } print (data6)
2.2 格式化输出
格式符号
转换
%c
格式化字符及其ASCII码
%s
通过str() 字符串转换来格式化
%i
有符号十进制整数
%d
有符号十进制整数
%u
无符号十进制整数
%o
无符号八进制整数
%x
无符号十六进制整数(小写字母)
%X
无符号十六进制整数(大写字母)
%e
用科学计数法格式化浮点数
%E
作用同%e,用科学计数法格式化浮点数
%f
浮点数字,可指定小数点后的精度
%g
%f和%e 的简写
%G
%f和%E的简写
%p
用十六进制数格式化变量的地址
格式符号
功能
*
宽度或者小数点精度
-
左对齐
+
在正数前面显示加号( + )
#
在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0
显示的数字前面填充’0’而不是默认的空格
python 1 2 print ("The length of [%s] is %d bytes" % ("hello world!" , len ("hello world!" )))
python 1 2 3 4 5 pi = 3.141592653 print ("pi = %-10.4f" % (pi)) print ("pi = %+10.4f" % (pi)) print ("pi = %08.4f" % (pi)) print ("pi = %.*f" % (3 , pi))
format把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号”{}”作为特殊字符代替”%”,功能相对于%格式化输出更为强大。
python 1 2 3 4 5 6 def format (*args: object , **kwargs: object )''' Return value .format (format_spec )format_spec defaults to the empty string . See the Format Specification Mini -Language section of help ('FORMATTING' ) for details .'''
python 1 2 3 4 5 6 7 print ("{} {}" .format ("hello" , "world" )) print ("{0} {1}" .format ("hello" , "world" )) print ("{0} {1} {0}" .format ("hello" , "world" )) print ("{2} {1} {0}" .format ("hello" , "world" , "hk" ))print ("{a} {b} {a}" .format (b="hello" , a="world" ))
符号
功能
<
(默认)左对齐
>
右对齐
^
中间对齐
{:4s}
输出占4个字节
{:.2f}
输出两位小数
python 1 2 3 4 5 6 7 8 9 print ("{} && {}" .format ("hello" , "world" )) print ("{:15s} && {:>15s}" .format ("hello" , "world" )) print ("{:=<15s} && {:=>15s}" .format ("hello" , "world" )) print ("{:=^10s} && {:=^10s}" .format ("hello" , "world" )) print ("{} is {:.3f}" .format (3.1415926 , 3.1415926 )) print ("{0} is {0:>10.3f}" .format (3.1415926 ))
格式符号
功能
d
十进制整数输出
b
二进制输出
x
十六进制输出,9-15以用小写字母a-f
o
八进制输出
c
字符,整数的话会转化为ASCII码
s
字符串输出
e
幂符号,用科学计数法打印数字
g
一般格式,将数值以fixed-point number输出,数值很大的时候,用幂形式打印
n
数字,当值为整数时和’d’相同,值为浮点数时和’g’相同,不同的是它会根据区域设置插入数字分隔符
%
百分数,将数值乘以100然后以fixed-point number(‘f’)格式打印,会在后边加上%
python 1 2 3 4 5 6 7 8 9 10 print ("d:{:d}" .format (33 )) print ("b:{:b}" .format (33 )) print ("x:{:x}" .format (33 )) print ("o:{:o}" .format (33 )) print ("c:{:c}" .format (33 )) print ("s:{:s}" .format ("hello" )) print ("e:{:.13e}" .format (33 )) print ("g:{:g}" .format (33 )) print ("n:{:n}" .format (33 )) print ("%:{:.3%}" .format (33 ))
2.3.3 汉字与字母输出对齐以及format参数嵌套
在汉字与字母输出的过程中,汉字在utf8编码中被视为3个字节,在GBK编码中是2个字节,在uicode编码中是1个字节。
python 1 2 3 print (len ("字节数" )) print (len ("字节数" .encode("utf8" ))) print (len ("字节数" .encode("GBK" )))
在控制台进行汉字显示的时候,程序将其当作一个字节处理,但是显示的时候却是占用了两个字节的位置,这就导致了汉字与字母不能对齐的问题。如下例,打印表头及一些信息的时候,字母与汉字夹杂在一起,以同样的字节数打印,但是所占长度却不同。
python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Infos = [ {"ID" : "101" , "name" : "唐昊" , "sex" : "男" , "age" : "55" , "phonenum" : "11111111111" }, {"ID" : "102" , "name" : "Ayin" , "sex" : "女" , "age" : "50" , "phonenum" : "22222222222" }, {"ID" : "103" , "name" : "唐三" , "sex" : "男" , "age" : "20" , "phonenum" : "33333333333" }, {"ID" : "104" , "name" : "XiaoWu" , "sex" : "女" , "age" : "16" , "phonenum" : "55555555555" }, ] TableHeader = ["序号" , "姓名" , "性别" , "年龄" , "手机号" ] print ("|{0:^{len0}s}|{1:^{len1}s}|{2:^{len2}s}|{3:^{len3}s}|{4:^{len4}s}|" .format ( TableHeader[0 ], TableHeader[1 ], TableHeader[2 ], TableHeader[3 ], TableHeader[4 ], len0=15 , len1=15 , len2=15 , len3=15 , len4=15 )) for temp in Infos: print ("|{0:^{len0}s}|{1:^{len1}s}|{2:^{len2}s}|{3:^{len3}s}|{4:^{len4}s}|" .format ( temp["ID" ], temp["name" ], temp["sex" ], temp["age" ], temp["phonenum" ], len0=15 , len1=15 , len2=15 , len3=15 , len4=15 ))
解决方法:len = 固定长度 - len(“中文内容”.encode(“GBK”)) + len(“中文内容”) 比如“字节数”三个字,默认的字节长度为3,但是却要占用6个字节的位置,所以总的输出长度要减去这三个位置,才可以与其他的同长度的字符串对齐,所以就得到了上述的式子。 所以修改程序如下
python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 print ("|{0:^{len0}s}|{1:^{len1}s}|{2:^{len2}s}|{3:^{len3}s}|{4:^{len4}s}|" .format ( TableHeader[0 ], TableHeader[1 ], TableHeader[2 ], TableHeader[3 ], TableHeader[4 ], len0=15 - len (TableHeader[0 ].encode("GBK" )) + len (TableHeader[0 ]), len1=15 - len (TableHeader[1 ].encode("GBK" )) + len (TableHeader[1 ]), len2=15 - len (TableHeader[2 ].encode("GBK" )) + len (TableHeader[2 ]), len3=15 - len (TableHeader[3 ].encode("GBK" )) + len (TableHeader[3 ]), len4=15 - len (TableHeader[4 ].encode("GBK" )) + len (TableHeader[4 ]))) for temp in Infos: print ("|{0:^{len0}s}|{1:^{len1}s}|{2:^{len2}s}|{3:^{len3}s}|{4:^{len4}s}|" .format ( temp["ID" ], temp["name" ], temp["sex" ], temp["age" ], temp["phonenum" ], len0=15 - len (temp["ID" ].encode("GBK" )) + len (temp["ID" ]), len1=15 - len (temp["name" ].encode("GBK" )) + len (temp["name" ]), len2=15 - len (temp["sex" ].encode("GBK" )) + len (temp["sex" ]), len3=15 - len (temp["age" ].encode("GBK" )) + len (temp["age" ]), len4=15 - len (temp["phonenum" ].encode("GBK" )) + len (temp["phonenum" ])))
2.4 不换行输出 在python中的print函数在打印内容的时候会自动增加换行符号,但是print函数中有一个可选参数,就是end,使用end可以指定print结尾字符
python 1 print ("hello world!" , end="char" )
python 1 2 3 4 5 6 7 8 9 10 11 print ("hello world! 1" ) print ("hello world! 2" )print ("hello world! 3" , end="" ) print ("hello world! 4" )print ("hello world! 5" , end="\t" ) print ("hello world! 6" )print ("hello world! 7" , end="|" ) print ("hello world! 8" )
三.转义字符
转义
意义
\
在行尾的续行符,即一行未完,转到下一行继续写
\\
反斜杠(保留 \)
\'
反斜杠(保留 ‘)
\"
反斜杠(保留 “)
\b
退格(Backspace)
\f
换页
\n
换行符
\r
回车符
\t
水平制表符
\xhh
十六进制数,hh 代表字符,如 \x0a 代表换行