2.4 输入输出

程序需要和外界交换数据,最基本的就是从用户获取输入——input()和显示给用户——print()。

2.4.1 输出 - print()函数

基本使用

print()函数输出传给它的参数的值。不只是直接输出一个变量的值或字面值,它还可以输出多个参数或是进行格式化输出。

如果是多个参数,参数之间要用逗号作为分隔符,输出的结果以一个空格分隔。默认情况下以换一行作为输出结束,也就是每一条print函数输出结果占一行。

格式化输出

格式化输出使用%和一个代表类型的字符构成占位符。每个占位符将由字符串后面%引出的变量提供值来实际输出,如果超过一个占位符,相应的%后面要用括号括起相同数目的值或者变量。

格式化输出的另一种写法是使用{}与format()函数,{}作为占位符,大括号里面可以直接使用变量名或者由后面的format函数提供变量,也可以使用变量的数字索引,如果直接使用变量名,需要在字符串前加f。

常用的类型字符如下:

类型 对应内容
d 十进制整数
b 二进制整数
o 八进制整数
x 十六进制整数
f 浮点数定点表示法
e 科学计数法
g 常规格式
s 字符串

格式化输出的另一种写法是使用{}与format()函数,{}作为占位符,大括号里面可以直接使用变量名或者由后面的format函数提供变量,也可以使用变量的数字索引,如果直接使用变量名,需要在字符串前加f。{}占位符中也可以使用%占位符中的类型字符。

输出格式

%占位符或大括号占位符都可以设置输出格式,大括号占位符中要使用冒号,之后可以加入以下格式:

格式符号 描述
< 靠左对齐(%占位符:-)
> 靠右对齐(%占位符默认靠右对齐)
n 所占总宽度
.m 小数点以及小数部分宽度

转义字符

代码中的\n输出一个换行,这是转义字符,即将本来的字符n加上\,构成了一个新的字符\n,有着新的作用。

这样的转义字符常用的有:

转义字符 描述
\' 单引号
\" 双引号
\n 换行
\t 横向跳到下一个制表位
\\ 反斜线本身

常用的使用方法为:2.2-print.py

# 基本做法1:输出字面值
print('abcde')
print(24)

# 基本做法2:输出变量的值
my_name = 'liu'
my_age = 25
print(my_name)
print(my_age)

# 基本做法3:输出多个值
print(my_name, my_age, 'happy')

# 格式化输出:%
print('% 格式化输出')
print('我的名字:%s' % my_name)
print('我的年龄:%d' % my_age)
print('我的名字和年龄:%s, %d' % (my_name, my_age))

# 格式化输出:{},format
print('{}格式化输出')
print('我的名字:{}'.format(my_name))
print(f'我的年龄:{my_age}')
print('我的名字和年龄:{1}, {0}'.format(my_age, my_name))

# 换行输出 \n
print('这是第一行\n这是第二行\n这是第三行')

结果为:

abcde
24
liu
25
liu 25 happy
% 格式化输出
我的名字:liu
我的年龄:25
我的名字和年龄:liu, 25
format()函数格式化输出
我的名字:liu
我的年龄:25
我的名字和年龄:liu, 25
这是第一行
这是第二行
这是第三行

制表符举例:2.3-tab.py

# 制表符tab,一般为4或8个字符宽度
print('12345678901234567890')
print('ab\tcd')
print('e\tfgh')

结果为:(在不同的环境中,输出的tab宽度可能不同,有的是4个字符,有的是8个字符)

12345678901234567890
ab      cd
e       fgh

这样可以让多行内容在纵向上对齐。

2.4.2 输入 - input()函数

输入使用input()函数,input()函数等待用户输入内容,输入回车后,输入的内容作为input()函数的返回值在程序中使用。注意input()函数接收到的内容都是作为字符串处理的。

例如:2.4-input.py

# input基本用法,获取的内容作为字符串存储
my_str = input()
print("输入的内容:%s" % my_str)
print(type(my_str))

# 加入提示性文字
name = input('请输入姓名:')
print('输入的姓名:', name)

# 提示内容字符串使用方法等同于print
number = 1
addr = input('请输入第{}个人的地址:'.format(number))
print('地址为:', addr)

结果为:

abcd
输入的内容:abcd
<class 'str'>
请输入姓名:Liu
输入的姓名: Liu
请输入第1个人的地址:NJ
地址为: NJ

或者:

1234
输入的内容:1234
<class 'str'>
请输入姓名:刘
输入的姓名: 刘
请输入第1个人的地址:南京
地址为: 南京