Python 输入输出

本文主要介绍 Python 输入和输出的函数接口使用方法。在程序调试过程中,我们通常需要将信息输出到终端控制台,或者从键盘输入数据到程序中。为此,Python 为我们提供了 input()print() 函数。

input() 输入

input() 是 Python 的内建函数,括号内存放的参数用作提示信息。

what = input("请输入:")
print ("你输入的内容是: ", what)

执行该语句后,Python 会等待用户输入数据,当从键盘获取数据后,将其返回给 what 变量。

与 Python 2.7 不同的是,Python 3.x 没有 raw_input() 函数,只有 input() 函数,因此会把用户输入的任何值都当作字符串来对待。

print() 输出

print() 函数同样是内建函数,与 Python 2.7 不同的是,Python 3.x 的 print() 函数一定要加上括号。

print() 函数默认是输出换行的,如果不需要换行,需要指定 end 参数,比如:

print("Hello, World!", end="")

print() 函数支持字符串运算,比如打印 10 个等号,可以这样:

print("="*10)

print() 函数也可以接收多个参数,此时需要用逗号隔开,比如:

num = 1
print("我要买:", num, "盒", "牛奶")

格式化输出

Python 中支持两种格式化输出语法。一种是类似于 C 语言 printf() 的方式,称为 Formatting Expression;另一种是类似于 C# 的方式,称为 String Formatting Method Calls

C 语言风格

基本是前文格式控制,%(,,) 中分别表示输出内容。 如果只有一个需要格式化输出的变量,则该变量紧跟在百分号 %(percent)后面即可;如果有多个需要格式化输出的变量,那么需要将变量放到圆括号 ()(parenthesis)中,并且变量之间用逗号 ,(comma)隔开。

格式化指示符包括:

  • b 二进制。将数字以 2 为基数进行输出。
  • c 字符。在打印之前将整数转换成对应的 Unicode 字符串。
  • d 十进制整数。将数字以 10 为基数进行输出。
  • o 八进制。将数字以 8 为基数进行输出。
  • x 十六进制。将数字以 16 为基数进行输出,9 以上的位数用小写字母。
  • e 幂符号。用科学计数法打印数字。用 e 表示幂。
  • g 一般格式。将数值以 fixed-point 格式输出。当数值特别大的时候,用幂形式打印。
  • n 数字。当值为整数时和 d 相同,值为浮点数时和 g 相同。不同的是它会根据区域设置插入数字分隔符。
  • % 百分数。将数值乘以 100 然后以 fixed-point('f') 格式打印,值后面会有一个百分号。

format 方法

格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本是前文格式控制,.format(,,) 中分别表示输出内容。数字 (0, 1, …) 即代表 format() 里面的元素,所以可以使用 . 调用元素的方法。

字符串的参数使用 {NUM} 进行表示占位,{0} 表示第一个参数,{1} 表示第二个参数,以后顺次递加。使用 : 指定代表元素需要的操作,如 {0:.3f} 表示保留小数点后三位,{0:<8} 表示占 8 个字符空间并且左对齐等。

可以指定所需长度的字符串的对齐方式:

  • < 左对齐 (默认)
  • > 右对齐
  • ^ 中间对齐
  • = 在小数点后进行补齐(只用于数字)

对比两种格式化输出的方式,我们可以认为 format() 函数通过 {}: 来代替前者的 %

使用示例:

>>> "{} {}".format("hello", "world")    # 不指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world")  # 指定位置
'hello world'
>>> "{1} {0}".format("hello", "world")  # 指定位置
'world hello'

# 指定参数名
>>> print("网站:{website}, 地址:{url}".format(website="GetIoT", url="https://getiot.tech"))
网站:GetIoT, 地址:https://getiot.tech

# 通过字典设置参数
>>> site = {"website":"GetIoT", "url":"https://getiot.tech"}
>>> print("网站:{website}, 地址:{url}".format(**site))
网站:GetIoT, 地址:https://getiot.tech

# 通过列表索引设置参数,"0"是必须的
>>> web_list = ["GetIoT", "https://getiot.tech"]
>>> print("网站:{0[0]}, 地址:{0[1]}".format(web_list))
网站:GetIoT, 地址:https://getiot.tech

数字格式化示例:

数字 格式 输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:10d} 13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d} 13 中间对齐 (宽度为10)
11 '{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB
进制

Leave a Reply