Python每日一学 01——输入输出

Python每日一学 01——输入输出

一、前言

本专栏准备进行长期的Python训练,也正好最近为马上的期末考试而复习,而且还可以为明年的蓝桥杯打基础。

从基础开始,循序渐进,一步一个脚印。

二、输出函数

Python主要有两种输出值的方式:

  1. 表达式语句
  2. print() 函数

表达式语句主要用于交互模式,在交互模式下输入变量或表达式将可以直接输出变量或表达式的值。

例如在交互模式下输入5 + 6 / 2 - 3 * 2并回车,解释器直接输出表达式计算结果。

5 + 6 / 2 - 3 * 2   # 交互模式下可以直接输出表达式结果,不用加print()
2.0

表达式语句直接输出仅用于极少计算或测试时,更普遍的方式是用 print()函数 进行输出。
print()函数的语法为:

print(*objects, sep=' ', end='\n')

print()函数主要用于将单个对象多个对象 输出到屏幕上。

print('Hello world!')    # 单个对象原样输出,输出后自动换行
Hello world!

若对象为表达式,则先计算表达式结果再输出这个结果:

print(2 * 3.1415926 * 5 ** 2)  # 圆的面积 157.07963
157.07963

输出多个对象时,用半角逗号“,”将要输出的对象隔开作为print()函数的参数。
输出时默认用空格对输出值进行分隔:

print(2022, 6, 16)    # 输出多个对象时,对象之间用半角逗号分隔
# 输出 2022 6 16,输出的多个对象之间默认用空格分隔
2022 6 16

输出多个对象时,可以用 sep参数 指定分隔符号,sep参数的值必须是 字符串

print(2022, 6, 16, sep='/')  # sep参数值为字符串'/',用于分隔输出的多个对象
# 输出 2022/6/16
2022/6/16
print(2022, 6, 16, sep='-')  # sep参数值为字符串'-',用于分隔输出的多个对象
# 输出 2022-6-16
2022-6-16
print(23, 59, 30, sep=':')   # sep参数值为字符串':',用于分隔输出的多个对象
# 输出 23:59:30
23:59:30

print()函数中 end 参数 默认值是 换行符(‘\n’) ,此参数值缺省时,执行print() 函数后会自动输出一个 换行

for i in range(4):     # 重复执行缩进区域的语句4次  
    print(i)            # end默认参数值是'\n',默认输出后换行
0
1
2
3

如果希望多个print() 语句的输出在 换行符(‘\n’) 同一行中,可以给print() 函数里的end 参数一个 字符串类型的值。

例如设置 end=’ 'end=‘,’ ,使每条print() 语句的输出后用 空格逗号 代替默认的 换行符(‘\n’) ,实现多条print() 语句输出在 同一行 内的效果:

for i in range(4):     # 重复执行缩进区域的语句4次  
    print(i, end=' ')  # end参数值不是'\n'时,输出后不换行,单引号间有一个空格
# 输出的每个数后有一个空格:0 1 2 3
0 1 2 3 

设置end=‘’(空字符串),实现多个对象连续输出的效果:

for i in range(4):     # 重复执行缩进区域的语句4次  
    print(i, end='')  # end参数值不是'\n'时,输出后不换行,单引号间有一个空格
# 输出的每个数后没有空格,连续输出:0123
0123

注意, 中英文逗号 是不同的,英文符号是半角,中文符号是全角表示,注意观察下面两组代码的输出:

0,1,2,3, # 英文逗号,称为半角符号
0,1,2,3, # 中文逗号,称为全角符号

for i in range(4):     # 重复执行缩进区域的语句4次  
    print(i, end=',')  # end参数值不是'\n'时,输出后不换行
# 输出:0,1,2,3,
0,1,2,3,

三、输出格式

print() 函数只能输出用特定分隔符分隔的值,当需要更多的控制输出格式时,可以使用以下方法。

1、格式化字符串字面值

格式化字符串字面值,又称为f-string,这是Python 3.6以后提供的一个新方法,用“f”或“F”做前缀格式化字符串输出。

f’原样输出的字符串{大括号位置用大括号中的变量值替换}'使用时,在字符串开始的引号前加上 “f”或“F”,字符串中可放置 大括号“{}”作为 替换域,输出时,字符串将被原样输出, 替换域中的变量或表达式在程序运行时会被变量和表达式的值代替。

a = 5
b = 3
print(f'{a} - {b} = {a - b}')   # 输出: 5 - 3 = 2
5 - 3 = 2
user_name = 'Tom'
gender = 'male'
age = '20'
print(f'姓名:{user_name},性别:{gender},年龄:{age}')
# 输出:姓名:Tom,性别:male,年龄:20
姓名:Tom,性别:male,年龄:20

大括号中的变量值可以为任意类型,当大括号中的值为 字符串时,需使用 双引号

print(f'姓名:{"Tom"},性别:{"male"},年龄:{40}')
# 姓名:Tom,性别:male,年龄:40
姓名:Tom,性别:male,年龄:40

用 ‘:m’ 在 ':'后传递一个整数m可以让该字段最小字符宽度为m个,可用于设置右对齐。
下面例子中,当输出少于3个字符时至少占3个字符宽度,可用于保证输出右对齐。

print(f'{1} *  {9} = {1 * 9:3}')   # 1 *  9 =   9
print(f'{9} *  {9} = {9 * 9:3}')   # 9 *  9 =  81
print(f'{9} * {19} = {9 * 19:3}')  # 9 * 19 = 171
1 *  9 =   9
9 *  9 =  81
9 * 19 = 171

当输出 多于m个字符时按全部字符 实际字符宽度输出。

print(f'{1} *  {9} = {1 * 9:3}')    # 1 *  9 =   9
print(f'{9} * {19} = {9 * 999:3}')  # 9 * 19 = 8991
1 *  9 =   9
9 * 19 = 8991

‘:nf’冒号 ‘:’ 后传递一个整数 n 和字母 f 可以精确控制浮点数输出时的小数位数为n

pi = 3.141592653589793

print(f'小学生用圆周率时精确到小数点后2位,结果为{pi:.2f}')
# 小学生用圆周率时精确到小数点后2位,结果为3.14
print(f'大学生用圆周率时精确到小数点后7位,结果为{pi:.2f}')
# 大学生用圆周率时精确到小数点后7位,结果为3.14

2、str.format() 方法

str.format() 方法格式如下:

<模版字符串>.format(<逗号分隔的参数>)

与f-string类似,<模版字符串>由一系列的用大括号“{}”表示的替换域组成,用来控制修改字符串中嵌入值出现的位置。调用此方法的“模版字符串”可以包含字符串以及若干个大括号表示的替换域。

format() 括号中的放置与替换域数量相同的参数值,运行时默认按替换域出现的顺序一一对应填入到前面的替换域中。

a = 5
b = 3
print('{} + {} = {}'.format(a, b, a + b))     # 参数值按出现顺序填入替换域
5 + 3 = 8

如果替换域中标有序号,将根据序号到format()括号里查找序号对应的值进行填入。

# 这三条语句输出相同格式信息:
a = 5
b = 3
print('{} * {} = {}'.format(a, b, a * b))     # 参数值按出现顺序填入替换域
print('{2} * {1} = {0}'.format(a * b, b, a))  # 参数序号从0开始编号,依次为:0,1,2
print('{2} * {0} = {1}'.format(b, a * b, a))  # 括号中序号根据参数序号调整
5 * 3 = 15
5 * 3 = 15
5 * 3 = 15

按位置传递参数

print('我叫{},今年{}岁'.format('王伟', 18))                # 我叫王伟,今年18岁
我叫王伟,今年18岁

按序号传递参数,与位置无关,大括号中数字表示传递的对象的位置

print('这是{1},我喜欢喝{0}'.format('咖啡', '茶'))          # 这是茶,我喜欢喝咖啡
这是茶,我喜欢喝咖啡

序号可重复使用

print('这是{1},我喜欢喝{1}'.format('咖啡', '茶'))          # 这是茶,我喜欢喝茶
这是茶,我喜欢喝茶

参数可多于替代域索引数

print('这是{0},我喜欢喝{0}'.format('茶', '咖啡', '红酒'))  # 这是茶,我喜欢喝茶
这是茶,我喜欢喝茶

参数少于替代域索引数时报错。
使用时要保证format()中的参数数量与前面大括号{}的数量相同。

print('这是{1},我喜欢喝{0}'.format('茶')) # 错误用法,测试时去掉行首#号
# IndexError: Replacement index 1 out of range for positional args tuple
---------------------------------------------------------------------------

IndexError                                Traceback (most recent call last)

<ipython-input-43-c29376aa9cd1> in <module>
----> 1 print('这是{1},我喜欢喝{0}'.format('茶')) # 错误用法,测试时去掉行首#号
      2 # IndexError: Replacement index 1 out of range for positional args tuple


IndexError: tuple index out of range

除此以外,还可以在每个替换域中传入一个变量,在format()方法里给每一个变量赋值,输出时,将值按替换域的顺序进行输出。

print('{a} - {b} = {c}'.format(a=5, b=3, c=5-3))  # 5 - 3 = 2

使用变量名形式的简单字段名传递关键字参数,关键字参数的位置可以随意调换

print('我叫{user},今年{age}岁'.format(user='王伟', age=18))
print('我叫{user},今年{age}岁'.format(age=18, user='王伟'))
# 我叫王伟,今年18
我叫王伟,今年18岁
我叫王伟,今年18岁

正确输出结果:这是一辆2022年生产,型号是L90的红旗牌汽车,售价1000万元。
str.format()中也可以在大括号中加冒号和“格式限定符”,在冒号后面加“.mf”控制输出保留小数点后m位数字的浮点数(f代表float)。

print('{} / {} = {}'.format(a, b, a / b))   # 5 / 3 = 1.6666666666666667
print('{} / {} = {:.4f}'.format(a, b, a / b))  # 5 / 3 = 1.6667,.4f保留4位小数浮点数

3、字符串拼接的方法

用“+”将多个字符串拼接为一个字符串输出。

参与拼接的可以是字符串也可以是字符串变量。

参与拼接的变量为整数等其他数据类型时,需先用str()函数将其转为字符串类型再参与拼接。

user = '王伟'
age = 18    # 18是整数,用str(age)转为字符串 '18'
print('我叫' + user + ',今年' + str(age) + '岁')  # 我叫王伟,今年18岁
我叫王伟,今年18岁

四、输入函数

input()函数:作用是从标准输入设备(键盘)获得用户输入的一行数据,不管用户输入的是字符型还是数字型的数据,input()函数都会将其作为一个字符串类型处理。

a = input()        # 输入 5,默认为字符串'5'
b = input()        # 输入 3,默认为字符串'3'
print(f'输入给a的数据的类型是:{type(a)}')     # 输出<class 'str'>,a的类型是字符串 
print(f'a + b 的结果是两个字符串拼接到一起:{a + b}')       # 输出 53,'+' 作用是将两个字符串拼接为一个字符串
print(f'a * int(b)是将字符串{a}重复整数{int(b)}次:{a * int(b)}')    # 输出 555,'*' 作用是将字符串重复整数b次

当用户输入为“5”和“3”时,输出结果分别为“53”和“555”,而不是直接进行数学运算而得到“8”和“15”,这表明即使我们输入数字型数据,系统也会将其作为字符串进行处理。

为了提高程序的用户友好性,input()可以包含一些提示性的文字,提示性文字以双引号或单引号引起来放于input后的括号内,如:

a = input('请输入一个正整数,表示长方形边长:')        # 输入 5,默认为字符串'5'
b = input('请输入一个正整数,表示长方形边长:')        # 输入 3,默认为字符串'3'
print(f'边长为{a}{b}的长方形面积为:{int(a) * int(b)}')    # 输出15
请输入一个正整数,表示长方形边长:5
请输入一个正整数,表示长方形边长:3
边长为5和3的长方形面积为:15
user = input('请输入姓名:')          # 输出“请输入姓名:”等待输入,输入:张华
print('你真的是', user, '?')          # 输出3个对象,空格分隔,你真的是 张华 ?
print('你真的是', user, '?', sep='')  # 输出3个对象,空字符串分隔,你真的是张华?
print('你真的是' + user + '?')        # 字符串拼接,无分隔,你真的是张华?
print(f'你真的是{user}?')             # 格式化字符串输出,你真的是张华?
请输入姓名:张华
你真的是 张华 ?
你真的是张华?
你真的是张华?
你真的是张华?

运行时屏幕上会看到“请输入姓名:”的提示,同时程序做好接收用户输入的准备。

注意到第一个print语句输出时,在变量user的值“张华”的前后各输出一个空格,这是由print()函数的参数sep的默认值为空格导致的,可以在输出时设置参数“sep=‘’”来消除空格,也可以用字符串拼接或“f”前缀格式化字符串的方法消除多余的空格。

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-北天-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值