§ python-input与print的用法

  • 一.input()函数
  • 1.函数说明
  • 2.函数使用
  • 2.1 数据输入
  • 2.2 带提示的数据输入
  • 二.print()函数
  • 1.函数说明
  • 2.函数使用
  • 2.1 多种变量类型输出
  • 2.2 格式化输出
  • 2.3 format格式化输出
  • 2.4 不换行输出
  • 三.转义字符



使用软件为Windows下的vscode。

一.input()函数

1.函数说明

  • 函数在库中的原型及解释说明如下
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 类型。
  • 函数的参数可选,如果填写,则在接收字符串的时候会打印提示。
  • 回车标志着输入结束,但是回车不会被输入到接收数据的变量中
  • 函数使用格式
data = input()  # 从键盘获取字符,以回车结束

2.函数使用

2.1 数据输入

data = input()  # 输入数据
print(data)     # 打印输入的数据
print(type(data))  # 打印输入的数据类型
print(len(data))   # 打印输入字符串的长度




vscode终端输入pytest没有反应 vscode python input_数据


2.2 带提示的数据输入

data = input("Please enter your data:")  # 输入数据
print(data)     # 打印输入的数据
print(type(data))  # 打印输入的数据类型
print(len(data))   # 打印输入字符串的长度



vscode终端输入pytest没有反应 vscode python input_python_02


二.print()函数

1.函数说明

  • 函数在库中的原型及解释说明如下
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 多种变量类型输出

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)



vscode终端输入pytest没有反应 vscode python input_字符串_03


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’而不是默认的空格

  • 输出实例1
# 打印字符串长度
print("The length of [%s] is %d bytes" % ("hello world!", len("hello world!")))



vscode终端输入pytest没有反应 vscode python input_十六进制_04


  • 输出实例2
pi = 3.141592653
print("pi = %-10.4f" % (pi))  # 宽10字节,精度3位小数,左对齐
print("pi = %+10.4f" % (pi))  # 宽10字节,精度3位小数,默认右对齐,显示"±"号
print("pi = %08.4f" % (pi))   # 宽10字节,精度3位小数
print("pi = %.*f" % (3, pi))  # 用*从后面的元组中读取字段宽度或精度



vscode终端输入pytest没有反应 vscode python input_数据_05


2.3 format格式化输出

  format把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号"{}“作为特殊字符代替”%",功能相对于%格式化输出更为强大。

  • 函数原型如下
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.
'''
  • 2.3.1 基本输出方式
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"))  # 带关键字指定相应的字符串



vscode终端输入pytest没有反应 vscode python input_python_06


  • 2.3.1 对齐与小数取位数操作

符号

功能

<

(默认)左对齐

>

右对齐

^

中间对齐

{:4s}

输出占4个字节

{:.2f}

输出两位小数

print("{} && {}".format("hello", "world"))  # 默认左对齐

print("{:15s} && {:>15s}".format("hello", "world"))  # 15字节输出,第一个默认左对齐,第二个右对齐
# 注意这里要想在前边加补齐符号,不能省略默认的左对齐符号
print("{:=<15s} && {:=>15s}".format("hello", "world"))  # 15字节输出,第一个默认左对齐,第二个右对齐,不足的用=补齐
print("{:=^10s} && {:=^10s}".format("hello", "world"))  # 10字节中间对齐输出,不足的字节补=

print("{} is {:.3f}".format(3.1415926, 3.1415926))  # 保留2位小数
print("{0} is {0:>10.3f}".format(3.1415926))  # 保留3位小数,10字节右对齐输出



vscode终端输入pytest没有反应 vscode python input_python_07


  • 2.3.2 格式化输出

格式符号

功能

d

十进制整数输出

b

二进制输出

x

十六进制输出,9-15以用小写字母a-f

o

八进制输出

c

字符,整数的话会转化为ASCII码

s

字符串输出

e

幂符号,用科学计数法打印数字

g

一般格式,将数值以fixed-point number输出,数值很大的时候,用幂形式打印

n

数字,当值为整数时和’d’相同,值为浮点数时和’g’相同,不同的是它会根据区域设置插入数字分隔符

%

百分数,将数值乘以100然后以fixed-point number(‘f’)格式打印,会在后边加上%

print("d:{:d}".format(33))  # 十进制整数输出
print("b:{:b}".format(33))  # 二进制输出
print("x:{:x}".format(33))  # 十六进制输出,9-15以用小写字母a-f
print("o:{:o}".format(33))  # 八进制输出
print("c:{:c}".format(33))  # 字符,整数的话会转化为ASCII码
print("s:{:s}".format("hello"))  # 字符串输出
print("e:{:.13e}".format(33))  # 幂符号,用科学计数法打印数字
print("g:{:g}".format(33))  # 一般格式,将数值以fixed-point number输出,数值很大的时候,用幂形式打印
print("n:{:n}".format(33))  # 数字,当值为整数时和'd'相同,值为浮点数时和'g'相同,不同的是它会根据区域设置插入数字分隔符
print("%:{:.3%}".format(33))  # 百分数输出,保留三位小数



vscode终端输入pytest没有反应 vscode python input_python_08


  • 2.3.3 汉字与字母输出对齐以及format参数嵌套

  在汉字与字母输出的过程中,汉字在utf8编码中被视为3个字节,在GBK编码中是2个字节,在uicode编码中是1个字节。

print(len("字节数"))                 # 默认编码格式下汉字长度
print(len("字节数".encode("utf8")))  # utf8下汉字长度
print(len("字节数".encode("GBK")))   # GBK下汉字长度



vscode终端输入pytest没有反应 vscode python input_十六进制_09


  在控制台进行汉字显示的时候,程序将其当作一个字节处理,但是显示的时候却是占用了两个字节的位置,这就导致了汉字与字母不能对齐的问题。如下例,打印表头及一些信息的时候,字母与汉字夹杂在一起,以同样的字节数打印,但是所占长度却不同。

Infos = [
        {"ID": "101", "name": "唐昊", "sex": "男", "age": "55", "phonenum": "11111111111"},  # 0
        {"ID": "102", "name": "Ayin", "sex": "女", "age": "50", "phonenum": "22222222222"},  # 1
        {"ID": "103", "name": "唐三", "sex": "男", "age": "20", "phonenum": "33333333333"},  # 2
        {"ID": "104", "name": "XiaoWu", "sex": "女", "age": "16", "phonenum": "55555555555"},  # 3
        ]
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))



vscode终端输入pytest没有反应 vscode python input_数据_10


  解决方法:len = 固定长度 - len(“中文内容”.encode(“GBK”)) + len(“中文内容”)

  比如“字节数”三个字,默认的字节长度为3,但是却要占用6个字节的位置,所以总的输出长度要减去这三个位置,才可以与其他的同长度的字符串对齐,所以就得到了上述的式子。
  所以修改程序如下

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"])))



vscode终端输入pytest没有反应 vscode python input_字符串_11


2.4 不换行输出

  在python中的print函数在打印内容的时候会自动增加换行符号,但是print函数中有一个可选参数,就是end,使用end可以指定print结尾字符

  • 使用格式如下
print("hello world!", end="char")  # char为指定的结尾字符
  • 实例
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")



vscode终端输入pytest没有反应 vscode python input_python_12


三.转义字符

转义

意义

\

在行尾的续行符,即一行未完,转到下一行继续写

\\

反斜杠(保留 \)

\’

反斜杠(保留 ')

\"

反斜杠(保留 ")

\b

退格(Backspace)

\f

换页

\n

换行符

\r

回车符

\t

水平制表符

\xhh

十六进制数,hh 代表字符,如 \x0a 代表换行